Name: series-workflow8wjpj Phase: Succeeded StartedAt: 2026-08-21 13:17:18 +0000 UTC FinishedAt: 2026-08-21 17:08:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[0] Phase: Succeeded StartedAt: 2026-08-21 13:17:18 +0000 UTC FinishedAt: 2026-08-21 13:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 13:17:18 +0000 UTC FinishedAt: 2026-08-21 13:21:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "e625a9477d12baaff4025c5f9989184a907ea8fc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER", "NF_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "e625a9477d12baaff4025c5f9989184a907ea8fc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER", "NF_TABLES" ], "series_id": "1834f170-c445-44cb-a08b-53cce57e6744" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_tables_commit", "nf_tables_abort" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19hYm9ydCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzIGBkZWFkYCBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgcGhhc2UgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgIG1lc3NhZ2VzLiBJdCBhbHNvIHJlbW92ZXMgYW4gdW51c2VkIGBzZXRfdXBkYXRlX2xpc3RgIHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIHN0YXRlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbG9naWMgYnVncyBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgYWNjZXNzZXMgdG8gc2V0cyB0aGF0IGFyZSBiZWluZyBkZWxldGVkLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLCBhbmQgbm8gZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGlzIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgbmZfdGFibGVzIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgdG8gcHJvcGVybHkgbWFyayBzZXRzIGFzIGRlYWQgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHJlbW92ZXMgYW4gdW51c2VkIGxpc3QgaGVhZCBpbiB0aGUgYWJvcnQgcGF0aC4gVGhpcyBhbHRlcnMgdGhlIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIGFib3J0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE4MWU1NjZjMmVkM2M0YmE2NWI1NDk3NzM1ODEzMjk2MjE5ZjI2ODJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMzoyMDowMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5pbmRleCBjMTEyZWNjNGZjYTMyLi4yMTE3MzMzZjc1YWNmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5AQCAtMTA4OTQsNiAmIzQzOzEwODk0LDEwIEBAIHN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuIFx0XHRuZnRfY3R4X3VwZGF0ZShjdHgsIHRyYW5zKTtcbiBcbiBcdFx0c3dpdGNoICh0cmFucy1cdTAwM2Vtc2dfdHlwZSkge1xuJiM0MztcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVDpcbiYjNDM7XHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxuJiM0MztcdFx0XHRuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuIFx0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAoIXRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0KVxuQEAgLTExMzA1LDcgJiM0MzsxMTMwOSw2IEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbiB7XG4gXHRzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0ID0gbmZ0X3Blcm5ldChuZXQpO1xuIFx0c3RydWN0IG5mdF90cmFucyAqdHJhbnMsICpuZXh0O1xuLVx0TElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xuIFx0c3RydWN0IG5mdF9jdHggY3R4ID0ge1xuIFx0XHQubmV0ID0gbmV0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfdGFibGVzX2NvbW1pdCYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfYWJvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbmV0ZmlsdGVyIG5mX3RhYmxlcyBjb21taXQgYW5kIGFib3J0IGxvZ2ljIHRvIHByb3Blcmx5IG1hcmsgc2V0cyBhcyBkZWFkIGR1cmluZyBkZWxldGlvbiBhbmQgZGVzdHJ1Y3Rpb24sIGFuZCByZW1vdmVzIGFuIHVudXNlZCBsaXN0IGhlYWQgaW4gdGhlIGFib3J0IHBhdGguIFRoaXMgYWx0ZXJzIHRoZSBzdGF0ZSBtYW5hZ2VtZW50IG9mIG5mX3RhYmxlcyBzZXRzIGR1cmluZyB0cmFuc2FjdGlvbiBjb21taXRzIGFuZCBhYm9ydHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhODFlNTY2YzJlZDNjNGJhNjViNTQ5NzczNTgxMzI5NjIxOWYyNjgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTM6MjA6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCmluZGV4IGMxMTJlY2M0ZmNhMzIuLjIxMTczMzNmNzVhY2YgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCkBAIC0xMDg5NCw2ICYjNDM7MTA4OTQsMTAgQEAgc3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsCiAJCW5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpOwogCiAJCXN3aXRjaCAodHJhbnMtJmd0O21zZ190eXBlKSB7CiYjNDM7CQljYXNlIE5GVF9NU0dfREVMU0VUOgomIzQzOwkJY2FzZSBORlRfTVNHX0RFU1RST1lTRVQ6CiYjNDM7CQkJbmZ0X3RyYW5zX3NldCh0cmFucyktJmd0O2RlYWQgPSAxOwomIzQzOwkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfREVMU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAkJCWlmICghdGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQpCkBAIC0xMTMwNSw3ICYjNDM7MTEzMDksNiBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pCiB7CiAJc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCA9IG5mdF9wZXJuZXQobmV0KTsKIAlzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7Ci0JTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7CiAJc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTsKIAlzdHJ1Y3QgbmZ0X2N0eCBjdHggPSB7CiAJCS5uZXQgPSBuZXQsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgVGFibGVzIEFQSSBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBoaXR0aW5nIGBuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgaW4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIHNvbWUgbG9naWMgdGhlcmUgdG8gaGFuZGxlIHRoZSBkZWxldGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2Ygc2V0cy4gTGV0IG1lIHNlZS4uLiB5ZXMsIGl0JiMzOTtzIHNldHRpbmcgYG5mdF90cmFuc19zZXQodHJhbnMpLSZndDtkZWFkID0gMWAgd2hlbiBpdCBlbmNvdW50ZXJzIGBORlRfTVNHX0RFTFNFVGAgb3IgYE5GVF9NU0dfREVTVFJPWVNFVGAuIFRoYXQgbWFrZXMgc2Vuc2UuIE1hcmtpbmcgdGhlIHNldCBhcyAmIzM0O2RlYWQmIzM0OyBwcm9iYWJseSBoZWxwcyB3aXRoIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBwcmV2ZW50cyBmdXR1cmUgb3BlcmF0aW9ucyBvbiBpdCwgZWZmZWN0aXZlbHkgc2lnbmFsaW5nIGl0cyBkZW1pc2Ugd2l0aGluIHRoZSB0cmFuc2FjdGlvbi4gSSB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYW55IGZvbGxvdy11cCBnYXJiYWdlIGNvbGxlY3Rpb24gb3IgY2xlYW51cCBsb2dpYyBsaW5rZWQgdG8gdGhhdCBmbGFnLCBvciBwZXJoYXBzIGRlZmVycmVkIGNsZWFudXAuCgpBbmQgdGhlbiwgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyByZW1vdmluZyBgTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7YCBmcm9tIGBfX25mX3RhYmxlc19hYm9ydGAuIEhtbSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoYXQgd2FzIHByZXNlbnQgaW4gdGhlIGZpcnN0IHBsYWNlIGFuZCB3aHkgaXQmIzM5O3MgYmVpbmcgcmVtb3ZlZC4gSXMgdGhpcyBzb21lIGtpbmQgb2YgcmVmYWN0b3Jpbmcgb3Igc2ltcGxpZmljYXRpb24/IE1heWJlIHRoZSBsaXN0IHdhc24mIzM5O3QgbmVlZGVkIGFueW1vcmUsIG9yIHRoZSBmdW5jdGlvbmFsaXR5IGl0IHByb3ZpZGVkIGhhcyBiZWVuIG1vdmVkIGVsc2V3aGVyZSwgcGVyaGFwcyB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIG9yIGltcHJvdmUgZWZmaWNpZW5jeS4gSSBzaG91bGQgZGlnIGRlZXBlciBpbnRvIHRoYXQgYF9fbmZfdGFibGVzX2Fib3J0YCBmdW5jdGlvbi4gSSB3aWxsIGNoZWNrIHRoZSBjb250ZXh0IG9mIGJvdGggYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMsIGFuZCBjb25maXJtIHdoZXRoZXIgdGhlIHJlbW92YWwgaXMgc2FmZSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X3NldF9jb21taXRfdXBkYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA4Njg9c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg4Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODgzOnN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4ODQtXHRcdFx0XHQgIHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA5Mzc9c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxNy1cdC8qIHN0ZXAgMi4gIE1ha2UgcnVsZXNfZ2VuX1ggdmlzaWJsZSB0byBwYWNrZXQgcGF0aCAqL1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEwMTg6XHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXHUwMDI2Y3R4LCBuZnRfbmV0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgemVyb2luZyBpbiBvbiBhIGNyaXRpY2FsIHNlY3Rpb24gd2l0aGluIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGludHJvZHVjaW5nIGEgY29uZGl0aW9uIHdoZXJlIGBuZnRfdHJhbnNfc2V0KHRyYW5zKS0mZ3Q7ZGVhZCA9IDE7YCBnZXRzIHNldCB3aGVuIGB0cmFucy0mZ3Q7bXNnX3R5cGVgIGlzIGVpdGhlciBgTkZUX01TR19ERUxTRVRgIG9yIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGRpcmVjdCBhbHRlcmF0aW9uIG9mIGhvdyBuZXRmaWx0ZXImIzM5O3MgYG5mX3RhYmxlc2AgaGFuZGxlcyBzZXQgZGVsZXRpb24gYW5kIGRlc3RydWN0aW9uLiAgTXkgc3BpZGV5IHNlbnNlIGlzIHRpbmdsaW5nOyB0aGlzIHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldC4mIzM0OyBXZSBuZWVkIHRvIHJlYWxseSBoYW1tZXIgdGhpcyB3aXRoIGEgZnV6emluZyBjYW1wYWlnbi4gVGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIHJhY2UgY29uZGl0aW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGNoYW5nZXMgZHVyaW5nIHRob3NlIHNwZWNpZmljIHNldCBvcGVyYXRpb25zIGlzIGRlZmluaXRlbHkgdGhlcmUuCgpCZWZvcmUgd2Ugc3RhcnQgZnV6emluZywgbGV0JiMzOTtzIHRha2UgYSBtaW51dGUgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHByZXJlcXVpc2l0ZXMuIFdlIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHdlJiMzOTtyZSB3b3JraW5nIHdpdGggYSBzeXN0ZW0gcHJvcGVybHkgc2V0IHVwIHRvIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLiBJIG5lZWQgdG8ga25vdyBwcmVjaXNlbHkgd2hpY2gga2VybmVsIGNvbmZpZ3MgYXJlIG5lY2Vzc2FyeSB0byBlbmFibGUgYWxsIHRoZSByZWxldmFudCBmZWF0dXJlcyBvZiBgbmZfdGFibGVzYCB0aGF0IGFyZSB0aWVkIGludG8gdGhpcyBsb2dpYy4gR290dGEgZW5zdXJlIHdlJiMzOTtyZSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24sIG9yIHdlJiMzOTtyZSB3YXN0aW5nIHZhbHVhYmxlIGZ1enppbmcgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfVEFCTEVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDU1OmNvbmZpZyBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzMtXHRkZXBlbmRzIG9uIElQVjZcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDc5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTIxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHNvIHRoZSBjbHVlIGlzIGBORl9UQUJMRVNgLiBUaGF0JiMzOTtzIHRoZSBjb25maWcgaXRlbSB3ZSYjMzk7cmUgZm9jdXNpbmcgb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgKm90aGVyKiBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucyBsdXJraW5nIGFyb3VuZC4gVGhlcmUmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBtb3JlIHRvIHRoZSBzdG9yeSB0aGFuIGp1c3QgdGhpcyBzaW5nbGUgc2V0dGluZy4gSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgdmlldyBiZWZvcmUgSSBzdGFydCB0byBtYWtlIGFzc3VtcHRpb25zIGFib3V0IGhvdyBgTkZfVEFCTEVTYCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBXZSBuZWVkIHRoZSBsYXkgb2YgdGhlIGxhbmQsIGFzIHRoaXMgbWlnaHQgYmUgdGhlIG9ubHkgY29uZmlnIGZpbGUgb2YgaXRzIGtpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTUtI1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZfVEFCTEVTX0JSSURHRVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZy03LVx0ZGVwZW5kcyBvbiBCUklER0UgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUiBcdTAwMjZcdTAwMjYgTkZfVEFCTEVTXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MzM9aWYgTkZfVEFCTEVTXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjM1OmNvbmZpZyBORl9UQUJMRVNfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMzYtXHRib29sIFwmIzM0O0lQdjQgbmZfdGFibGVzIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz02Mj1lbmRpZiAjIE5GX1RBQkxFU19JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy02My1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjY0OmNvbmZpZyBORl9UQUJMRVNfQVJQXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7QVJQIG5mX3RhYmxlcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Mjk9aWYgTkZfVEFCTEVTXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0zMC1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjMxOmNvbmZpZyBORl9UQUJMRVNfSVBWNlxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjYgbmZfdGFibGVzIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDUzPWVuZGlmICMgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU2LVx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTQ3MT1pZiBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVx0ZGVwZW5kcyBvbiBJUFY2XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0ODA6Y29uZmlnIE5GX1RBQkxFU19ORVRERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXHRib29sIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbmV0ZGV2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbmZfdGFibGVzIENvbW1pdCBVcGRhdGUgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBhbmQgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gVGhpcyBpcyBwYXJ0IG9mIHRoZSBgTkZfVEFCTEVTYCBjb25maWd1cmF0aW9uLCBzbyB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgYSBiaXQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCBhbmQsIG9mIGNvdXJzZSwgdGhlIGZ1bmN0aW9uIGl0IGNhbGxzLCBgX19uZl90YWJsZXNfYWJvcnRgLiBCdXQgd2FpdC4uLiB0aGlzIGlzIHN0YXRpYy4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBjYWxscywgc28gSSBuZWVkIHRvIHNlZSBpZiBpdCYjMzk7cyBpbmxpbmVkLiBMZXQgbWUgY2hlY2sgdGhlIGRpc2Fzc2VtYmx5IHRvIHNlZSBpZiB0aGUgc3RhdGljIGtleXdvcmQgaXMgYWN0dWFsbHkgaW4gdGhlIGNvbXBpbGVkIG91dHB1dCwgb3IgaWYgaXQgaGFzIGJlZW4gb3B0aW1pemVkIGF3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9zZXRfY29tbWl0X3VwZGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwODY4PXN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKHN0cnVjdCBsaXN0X2hlYWQgKmFkbCwgdTMyIGdlbmVyYXRpb24pXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4ODItXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDg4MzpzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODg0LVx0XHRcdFx0ICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTM3PXN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMTctXHQvKiBzdGVwIDIuICBNYWtlIHJ1bGVzX2dlbl9YIHZpc2libGUgdG8gcGFja2V0IHBhdGggKi9cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDE4Olx0bmZ0X3NldF9jb21taXRfdXBkYXRlKFx1MDAyNmN0eCwgbmZ0X25ldCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc4OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBpbnRlcm5hbHMgYW5kIG5ldGZpbHRlcjoKCioqSW5saW5pbmcgYW5kIFN0YXRpYyBTY29wZSBpbiBuZl90YWJsZXNfY29tbWl0KioKCkhtbSwgdGhpcyBgbmZfdGFibGVzX2NvbW1pdGAgZnVuY3Rpb24uLi4gSXQgc2VlbXMgc3RhdGljIGFuZCwgZnJvbSB3aGF0IEkgY2FuIHNlZSwgaXMgb25seSBldmVyIGNhbGxlZCBvbmNlLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZl90YWJsZXNfY29tbWl0YCBpdHNlbGYuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgdG8gbWUgdGhhdCBpdCYjMzk7cyBwcmltZSByZWFsIGVzdGF0ZSBmb3IgaW5saW5pbmcuIFRoZSBjb21waWxlciBpcyBwcm9iYWJseSBvcHRpbWl6aW5nIGl0IHRoYXQgd2F5IHRvIGF2b2lkIHRoZSBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIGl0cyBsaW1pdGVkIHNjb3BlLgoKU2luY2UgYG5mX3RhYmxlc19jb21taXRgIGl0c2VsZiBpcyBhbHNvIHN0YXRpYywgSSYjMzk7bSBnZXR0aW5nIGN1cmlvdXMgYWJvdXQgdGhlIGNhbGwgY2hhaW4gYW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gTGV0IG1lIHF1aWNrbHkgdHJhY2Ugd2hlcmUgKml0KiBpcyBjYWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhIGJpdCBiZXR0ZXIuIFRoaXMgY291bGQgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgZGV0YWlscyBhYm91dCBob3cgbmV0ZmlsdGVyIHRhYmxlcyBhcmUgYWN0dWFsbHkgY29tbWl0dGVkIGFuZCBhcHBsaWVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDMxOD1FWFBPUlRfU1lNQk9MX0dQTChuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzE5LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzMjA6c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzIxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDM5NC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMzk1OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfY2hhaW5fcHJlcGFyZV9jYW5jZWwoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzOTYte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDEwLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTE6c3RhdGljIHZvaWQgX19uZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXMoc3RydWN0IHJjdV9oZWFkICpoKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTIte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDE3LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTg6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChzdHJ1Y3QgbmZ0X3J1bGVfYmxvYiAqYmxvYilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDE5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyNS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDI2Olx0Y2FsbF9yY3UoXHUwMDI2bGFzdC1cdTAwM2VoLCBfX25mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlcyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyNy19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyOC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDI5OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfY2hhaW4oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDMwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ1MS1cdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoY2hhaW4tXHUwMDNlYmxvYl9nZW5fMSwgZzApO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NTI6XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ1My1cdFx0fSBlbHNlIHtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDU0LVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihjaGFpbi1cdTAwM2VibG9iX2dlbl8wLCBnMSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ1NTpcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXNfb2xkKGcwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDU2LVx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NzEtXHRpZiAobmV4dF9nZW5iaXQpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ3MjpcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ3My1cdGVsc2Vcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDc0Olx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXNfb2xkKGcwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDc1LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDcyND1zdGF0aWMgdm9pZCBuZl90YWJsZXNfbW9kdWxlX2F1dG9sb2FkX2NsZWFudXAoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzM2LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA3Mzc6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9yZWxlYXNlKHN0cnVjdCBuZXQgKm5ldClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzM4LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDc3MT1zdGF0aWMgdm9pZCBuZnRfY29tbWl0X25vdGlmeShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBwb3J0aWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MDYtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgwNzpzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXRfYXVkaXRfYWxsb2Moc3RydWN0IGxpc3RfaGVhZCAqYWRsLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MDgtXHRcdFx0XHRcdHN0cnVjdCBuZnRfdGFibGUgKnRhYmxlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODIzLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4MjQ6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKHN0cnVjdCBsaXN0X2hlYWQgKmFkbClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODI1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgzNi0gKi9cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODM3OnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9lbnRyeWNvdW50KGNvbnN0IHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4Mzgte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODQ3LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4NDg6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9jb2xsZWN0KHN0cnVjdCBsaXN0X2hlYWQgKmFkbCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODQ5LVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgdTMyIG9wKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODYwLWZvdW5kOlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4NjE6XHRhZHAtXHUwMDNlZW50cmllcyAmIzQzOz0gbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9lbnRyeWNvdW50KHRyYW5zKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODYyLVx0aWYgKCFhZHAtXHUwMDNlb3AgfHwgYWRwLVx1MDAzZW9wIFx1MDAzZSBvcClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg2Ny1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODY4OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKHN0cnVjdCBsaXN0X2hlYWQgKmFkbCwgdTMyIGdlbmVyYXRpb24pXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg2OS17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA5MzI9c3RhdGljIHZvaWQgbmZ0X2djX3NlcV9lbmQoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCwgdW5zaWduZWQgaW50IGdjX3NlcSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkzNi1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTM3OnN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkzOC17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5OTctXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDk5ODpcdFx0cmV0ID0gbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9hbGxvYyhcdTAwMjZhZGwsIHRhYmxlKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTk5LVx0XHRpZiAocmV0KSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwMDpcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKG5ldCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwMTpcdFx0XHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2ZyZWUoXHUwMDI2YWRsKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDAyLVx0XHRcdHJldHVybiByZXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMDctXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwODpcdFx0XHRyZXQgPSBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmUobmV0LCBjaGFpbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAwOS1cdFx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAxMDpcdFx0XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fcHJlcGFyZV9jYW5jZWwobmV0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDExOlx0XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKFx1MDAyNmFkbCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxMi1cdFx0XHRcdHJldHVybiByZXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMjEtXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoY2hhaW4sIFx1MDAyNnRhYmxlLVx1MDAzZWNoYWlucywgbGlzdClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDIyOlx0XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW4obmV0LCBjaGFpbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAyMy1cdH1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTA0NS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDQ2Olx0XHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2NvbGxlY3QoXHUwMDI2YWRsLCB0cmFucywgdHJhbnMtXHUwMDNlbXNnX3R5cGUpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwNDctXHRcdHN3aXRjaCAodHJhbnMtXHUwMDNlbXNnX3R5cGUpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTIzMC1cdG5mX3RhYmxlc19nZW5fbm90aWZ5KG5ldCwgc2tiLCBORlRfTVNHX05FV0dFTik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTIzMTpcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKFx1MDAyNmFkbCwgbmZ0X2Jhc2Vfc2VxKG5ldCkpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzItXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzQtXHRuZnRfbmV0LVx1MDAzZXZhbGlkYXRlX3N0YXRlID0gTkZUX1ZBTElEQVRFX1NLSVA7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTIzNTpcdG5mX3RhYmxlc19jb21taXRfcmVsZWFzZShuZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzYtXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5ldGxpbmtfc3Vic3lzdGVtIG5mX3RhYmxlc19zdWJzeXMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NTktXHQuY2JcdFx0PSBuZl90YWJsZXNfY2IsXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU2MDpcdC5jb21taXRcdFx0PSBuZl90YWJsZXNfY29tbWl0LFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjEtXHQuYWJvcnRcdFx0PSBuZl90YWJsZXNfYWJvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NjQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBUYWJsZXMgQ29tbWl0IENhbGxiYWNrKioKCk9rYXksIHNvIGBuZl90YWJsZXNfY29tbWl0YCBpcyB0aGUgY3JpdGljYWwgY29tbWl0IGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgYG5mX3RhYmxlc19zdWJzeXNgLCBnb3QgaXQuIEFuZCBgX19uZl90YWJsZXNfYWJvcnRgIGlzIGNhbGxlZCBieSBgbmZfdGFibGVzX2Fib3J0YC4gVGhlc2UgYXJlIGJvdGggcmVhY2hhYmxlIGZ1bmN0aW9ucywgc28gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgdGFyZ2V0cy4gV2UgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoZXNlLCBhbmQgSSYjMzk7bGwgZm9jdXMgb24gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgLiBIbW0sIHdhaXQgYSBtaW51dGUsIGBfX25mX3RhYmxlc19hYm9ydGAgaXMgc3RhdGljPyBUaGF0IG1lYW5zIGl0JiMzOTtzIGxpa2VseSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0IGl0JiMzOTtzIGRlZmluZWQgaW4uIE5lZWQgdG8gY2hlY2sgaWYgaXQmIzM5O3MgaW5saW5lZC4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gb3B0aW1pemVkIGF3YXkgYW5kIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBXZSBuZWVkIHRvIGNoZWNrIHRoZSBhc3NlbWJseSBvciBnZW5lcmF0ZWQgY29kZSB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbmZfdGFibGVzX2Fib3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTEyOTQ9c3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTMwNy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMzA4OnN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMzA5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTUwNj1zdGF0aWMgaW50IG5mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MTMtXHRnY19zZXEgPSBuZnRfZ2Nfc2VxX2JlZ2luKG5mdF9uZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MTQ6XHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTUxNS1cdG5mdF9nY19zZXFfZW5kKG5mdF9uZXQsIGdjX3NlcSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNzQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5OiBBYm9ydGluZyBOZXRmaWx0ZXIgVGFibGVzKioKCk9rYXksIHNvIGBfX25mX3RhYmxlc19hYm9ydGAgaXMgZGlyZWN0bHkgY2FsbGVkIGJ5IGBuZl90YWJsZXNfYWJvcnRgLiBSaWdodCwgYG5mX3RhYmxlc19hYm9ydGAgZnVuY3Rpb25zIGFzIHRoZSBhYm9ydCBjYWxsYmFjayBmb3IgdGhlIGBuZl90YWJsZXNfc3Vic3lzYC4gU28sIHN0cmF0ZWdpY2FsbHksIEkgY2FuIHplcm8gaW4gb24gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCBhcyBteSBrZXkgZm9jdXMgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgaGVyZS4KCk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQgbWUganVzdCBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQWgsIHllcywgYE5GX1RBQkxFU2AgaXRzZWxmIGlzIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24uIEhhbmcgb24uLi4gYE5GX1RBQkxFU2AgKmRlcGVuZHMqIG9uIGBORVRGSUxURVJgLiBSaWdodCwgZ290IGl0LiBCZXR0ZXIgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYE5FVEZJTFRFUmAgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRGSUxURVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTI9bWVudSBcJiMzNDtDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTpjb25maWcgTkVURklMVEVSX0lOR1JFU1Ncbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzOmNvbmZpZyBORVRGSUxURVJfRUdSRVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQtXHRib29sIFwmIzM0O05ldGZpbHRlciBlZ3Jlc3Mgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMTpjb25maWcgTkVURklMVEVSX1NLSVBfRUdSRVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjItXHRkZWZfYm9vbCBORVRGSUxURVJfRUdSRVNTIFx1MDAyNlx1MDAyNiAoTkVUX0NMU19BQ1QgfHwgSUZCKVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI1LVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3OmNvbmZpZyBORVRGSUxURVJfRkFNSUxZX0JSSURHRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI4LVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMwOmNvbmZpZyBORVRGSUxURVJfRkFNSUxZX0FSUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxLVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzOmNvbmZpZyBORVRGSUxURVJfQlBGX0xJTktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cdGRlZl9ib29sIEJQRl9TWVNDQUxMXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzY6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0hPT0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBiYXNlIGhvb2sgZHVtcCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ2OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19BQ0NUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDctXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTkZBQ0NUIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1NDpjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBORlFVRVVFIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo2Mjpjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTE9HIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NDpjb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgT1NGIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTA9aWYgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTExOmNvbmZpZyBORVRGSUxURVJfQ09OTkNPVU5UXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEyLVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzg1PWNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zOTctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzk4OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19HTFVFX0NUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzk5LVx0Ym9vbCBcJiMzNDtORlFVRVVFIGFuZCBORkxPRyBpbnRlZ3JhdGlvbiB3aXRoIENvbm5lY3Rpb24gVHJhY2tpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDQ3PWNvbmZpZyBORl9OQVRfT1ZTXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTA6Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1MS1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTcyMT1jb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzI4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcyOTpjb25maWcgTkVURklMVEVSX1hUQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MzAtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgWHRhYmxlcyBzdXBwb3J0IChyZXF1aXJlZCBmb3IgaXBfdGFibGVzKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MzY9aWYgTkVURklMVEVSX1hUQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MzctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzM4OmNvbmZpZyBORVRGSUxURVJfWFRBQkxFU19DT01QQVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MzktXHRib29sIFwmIzM0O05ldGZpbHRlciBYdGFibGVzIDMyYml0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzQ2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc0Nzpjb25maWcgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzQ4LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgbGVnYWN5IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTc1Nz1jb21tZW50IFwmIzM0O1h0YWJsZXMgY29tYmluZWQgbW9kdWxlc1wmIzM0O1xubmV0L25ldGZpbHRlci9LY29uZmlnLTc1OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NTk6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzYwLVx0dHJpc3RhdGUgJiMzOTtuZm1hcmsgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzcyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc3Mzpjb25maWcgTkVURklMVEVSX1hUX0NPTk5NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzc0LVx0dHJpc3RhdGUgJiMzOTtjdG1hcmsgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzg0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc4NTpjb25maWcgTkVURklMVEVSX1hUX1NFVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc4Ni1cdHRyaXN0YXRlICYjMzk7c2V0IHRhcmdldCBhbmQgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTc5OT1jb21tZW50IFwmIzM0O1h0YWJsZXMgdGFyZ2V0c1wmIzM0O1xubmV0L25ldGZpbHRlci9LY29uZmlnLTgwMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4MDE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQVVESVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MDItXHR0cmlzdGF0ZSBcJiMzNDtBVURJVCB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODExOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NIRUNLU1VNXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEyLVx0dHJpc3RhdGUgXCYjMzQ7Q0hFQ0tTVU0gdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODI2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyNzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgyOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Q0xBU1NJRllcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MzgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODM5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODQwLVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Q09OTk1BUktcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NDgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODQ5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODUwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtDT05OU0VDTUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTg2MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4NjE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NjItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0NUXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODcyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjg3Mzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9EU0NQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODc0LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtEU0NQXCYjMzQ7IGFuZCBcJiMzNDtUT1NcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04ODgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODg5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0hMXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODkwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtITFwmIzM0OyBob3BsaW1pdCB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTkwMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MDQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfSE1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MDUtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0hNQVJLXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTE3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjkxODpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9JRExFVElNRVJcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MTktXHR0cmlzdGF0ZSAgXCYjMzQ7SURMRVRJTUVSIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTkyOS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MzA6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTEVEXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTMxLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtMRURcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTU0OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0xPR1xubmV0L25ldGZpbHRlci9LY29uZmlnLTk1NS1cdHRyaXN0YXRlIFwmIzM0O0xPRyB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NjQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTY1OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX01BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NjYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O01BUktcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTc0OmNvbmZpZyBORVRGSUxURVJfWFRfTkFUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTc1LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtTTkFUIGFuZCBETkFUXCYjMzQ7IHRhcmdldHMgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk4MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5ODI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkVUTUFQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTgzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtORVRNQVBcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OTEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTkyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTkzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtORkxPR1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMDEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTAwMjpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAwMy1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7TkZRVUVVRVwmIzM0OyB0YXJnZXQgU3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTAxNDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9OT1RSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAxNS1cdHRyaXN0YXRlICAmIzM5O1wmIzM0O05PVFJBQ0tcJiMzNDsgdGFyZ2V0IHN1cHBvcnQgKERFUFJFQ0FURUQpJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDIxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDIyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtSQVRFRVNUXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAzMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDMxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1JFRElSRUNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAzMi1cdHRyaXN0YXRlIFwmIzM0O1JFRElSRUNUIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNDItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA0Mzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9NQVNRVUVSQURFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA0NC1cdHRyaXN0YXRlIFwmIzM0O01BU1FVRVJBREUgdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA1Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDU3OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RFRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNTgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1RFRVwmIzM0OyAtIHBhY2tldCBjbG9uaW5nIHRvIGFsdGVybmF0ZSBkZXN0aW5hdGlvbiYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNjctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA2ODpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UUFJPWFlcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDY5LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtUUFJPWFlcJiMzNDsgdGFyZ2V0IHRyYW5zcGFyZW50IHByb3h5aW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDg4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwODk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVFJBQ0Vcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDkwLVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7VFJBQ0VcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTAwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMDE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExMDItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1NFQ01BUktcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTEwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVENQTVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTExMi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7VENQTVNTXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEzNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTM3OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RDUE9QVFNUUklQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEzOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7VENQT1BUU1RSSVBcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTQ3PWNvbW1lbnQgXCYjMzQ7WHRhYmxlcyBtYXRjaGVzXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE0OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTQ5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQUREUlRZUEVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTUwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDthZGRydHlwZVwmIzM0OyBhZGRyZXNzIHR5cGUgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNTgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE1OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0JQRlxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNjAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2JwZlwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTY4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ0dST1VQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2OS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Y29udHJvbCBncm91cFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE3Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTc4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ0xVU1RFUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNzktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2NsdXN0ZXJcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExOTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE5NDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTk1LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Y29tbWVudFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIwMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjA0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIwNS1cdHRyaXN0YXRlICAmIzM5O1wmIzM0O2Nvbm5ieXRlc1wmIzM0OyBwZXItY29ubmVjdGlvbiBjb3VudGVyIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjE0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTEFCRUxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjE2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjb25ubGFiZWxcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMjctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIyODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMjktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2Nvbm5saW1pdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIzNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjM4LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Y29ubm1hcmtcJiMzNDsgY29ubmVjdGlvbiBtYXJrIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQ2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNDc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQ4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjb25udHJhY2tcJiMzNDsgY29ubmVjdGlvbiB0cmFja2luZyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI1OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjYwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ1BVXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI2MS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Y3B1XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjY4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNjk6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI3MC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZGNjcFwmIzM0OyBwcm90b2NvbCBtYXRjaCBzdXBwb3J0IChERVBSRUNBVEVEKSYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyODAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI4MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RFVkdST1VQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4Mi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZGV2Z3JvdXBcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyODktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI5MDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RTQ1Bcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjkxLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtkc2NwXCYjMzQ7IGFuZCBcJiMzNDt0b3NcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMDQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMwNTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0VDTlxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMDYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2VjblwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMxMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzE0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRVNQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMxNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZXNwXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzIyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzI0LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtoYXNobGltaXRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMzctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMzODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0hFTFBFUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMzktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2hlbHBlclwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM0Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzQ4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSExcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzQ5LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtobFwmIzM0OyBob3BsaW1pdC9UVEwgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNTUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM1Njpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0lQQ09NUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNTctXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwY29tcFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM2NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzY1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNjYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwcmFuZ2VcJiMzNDsgYWRkcmVzcyByYW5nZSBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzc1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBWU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNzYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwdnNcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzODQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM4NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0wyVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzg2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtsMnRwXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzk0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzOTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEhcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzk2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtsZW5ndGhcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MDMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQwNDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0xJTUlUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQwNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bGltaXRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQxNDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX01BQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MTUtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O21hY1wmIzM0OyBhZGRyZXNzIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDIyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQyNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bWFya1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQzMS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDMyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQzMy1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bXVsdGlwb3J0XCYjMzQ7IE11bHRpcGxlIHBvcnQgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NDEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ0Mjpjb25maWcgTkVURklMVEVSX1hUX01BVENIX05GQUNDVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NDMtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O25mYWNjdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ1MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDUyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfT1NGXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ1My1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7b3NmXCYjMzQ7IFBhc3NpdmUgT1MgZmluZ2VycHJpbnQgbWF0Y2gmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDY1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NjY6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9PV05FUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NjctXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O293bmVyXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDczLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NzQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9QT0xJQ1lcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDc1LVx0dHJpc3RhdGUgJiMzOTtJUHNlYyBcJiMzNDtwb2xpY3lcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0ODQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BIWVNERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDg2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtwaHlzZGV2XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDk0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0OTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9QS1RUWVBFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5Ni1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7cGt0dHlwZVwmIzM0OyBwYWNrZXQgdHlwZSBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUwNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTA3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUVVPVEFcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTA4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtxdW90YVwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTE3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MTgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3JhdGVlc3RcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUyNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQUxNXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyOC1cdHRyaXN0YXRlICAmIzM5O1wmIzM0O3JlYWxtXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTQwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1NDE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9SRUNFTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTQyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtyZWNlbnRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU1MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NDVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTUyLVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7c2N0cFwmIzM0OyBwcm90b2NvbCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTYzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU09DS0VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2NC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7c29ja2V0XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTc5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1ODA6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TVEFURVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1ODEtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3N0YXRlXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTkwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1OTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTkyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtzdGF0aXN0aWNcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYwMDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUUklOR1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MDEtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtzdHJpbmdcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MTItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYxMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1RDUE1TU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MTQtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3RjcG1zc1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYyMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjIzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVElNRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MjQtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3RpbWVcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYzNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1UzMlxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MzgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3UzMlwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3MDEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIGBORVRGSUxURVJgIGlzIHRoZSBjZW50cmFsIHBpZWNlLCBvYnZpb3VzbHkuIFRoYXQgYWxzbyBtZWFucyBgTkZfVEFCTEVTYCBpcyBjcml0aWNhbCBpbiBhbGwgdGhpcy4gTm93LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGNvbW1pdC9hYm9ydCBmdW5jdGlvbnMuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gSG1tLCByaWdodC4uLiBgbmZfdGFibGVzX2NvbW1pdGAgaXMgc3RhdGljLiBUaGF0IHVzdWFsbHkgbWVhbnMgaXQmIzM5O3MgbG9jYWxpemVkLCBhIGhlbHBlciB3aXRoaW4gaXRzIG93biBzY29wZS4gT2theSwgdGhlIG5leHQgdGhpbmcgaXMgdG8gZGV0ZXJtaW5lIHdobyYjMzk7cyBjYWxsaW5nIGl0PyBJcyB0aGVyZSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCB1c2VzIHRoaXM/IEFoYSEgSGVyZSB3ZSBnbywgYG5mX3RhYmxlc19jb21taXRgIGlzIGNhbGxlZCBieSBgbmZuZXRsaW5rX3Jjdl9iYXRjaGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmNgLiBUaGF0JiMzOTtzIHRoZSBsaW5rIEkgd2FzIGxvb2tpbmcgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwNzYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIEludGVybmFsczogQSBRdWljayBPYnNlcnZhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBqdXN0IHRyYWNpbmcgdGhyb3VnaCB0aGUgbmV0ZmlsdGVyIGNvZGUsIGFuZCBJIG5lZWQgdG8gcmVjYWxpYnJhdGUgbXkgbWVudGFsIG1vZGVsIGZvciBhIG1vbWVudC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgcmVnaXN0cmF0aW9uIG9mIGBuZl90YWJsZXNfY29tbWl0YCB3YXMgaGFwcGVuaW5nIGVsc2V3aGVyZSwgYnV0IGhhbmcgb24uLi4gbG9va2luZyBhdCB0aGUgY29kZSBub3csIEkgc2VlIGl0JiMzOTtzIGFjdHVhbGx5IHJlZ2lzdGVyZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBgbmZfdGFibGVzX3N1YnN5c2Agc3RydWN0dXJlLiBUaGlzIGxpa2VseSBhZmZlY3RzIGhvdyBpdCBpcyBhY3RpdmF0ZWQgLSBJIG5lZWQgdG8gYWRqdXN0IG15IG1lbnRhbCBwYXRoIGZyb20gaG93IHRoaXMgaXMgY2FsbGVkLiBJIGhhZCBhc3N1bWVkIHNvbWUga2luZCBvZiBpbmRpcmVjdCByZWdpc3RyYXRpb24sIHBlcmhhcHMgdHJpZ2dlcmVkIGJ5IGEgbW9kdWxlIGxvYWQuIENsZWFybHksIHRoYXQgaXMgbm90IHRoZSBjYXNlLiBUaGlzIGRpcmVjdCByZWdpc3RyYXRpb24gbGlrZWx5IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSB0aW1pbmcgYW5kIGxpZmVjeWNsZSBkZXBlbmRlbmNpZXMuIFRoYXQmIzM5O3MgZ29vZCB0byBrZWVwIGluIG1pbmQsIGFuZCBtaWdodCBpbXBhY3QgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJhY3Rpb25zIHdoZW4gZGVidWdnaW5nIHRoaXMgYXJlYSBhZ2FpbiBpbiB0aGUgZnV0dXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhpbmtpbmcgb2YgdGhpcyBjb3JyZWN0bHkgd2hlbiBJIGV4YW1pbmUgdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlIG5leHQgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfdGFibGVzX3N1YnN5cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTM5PXN0YXRpYyBib29sIG5mX3RhYmxlc192YWxpZF9nZW5pZChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBnZW5pZClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU1NC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNTU1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZuZXRsaW5rX3N1YnN5c3RlbSBuZl90YWJsZXNfc3Vic3lzID0ge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NTYtXHQubmFtZVx0XHQ9IFwmIzM0O25mX3RhYmxlc1wmIzM0Oyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMjIzOT1zdGF0aWMgaW50IF9faW5pdCBuZl90YWJsZXNfbW9kdWxlX2luaXQodm9pZClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMjI3NS1cdC8qIG11c3QgYmUgbGFzdCAqL1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTIyNzY6XHRlcnIgPSBuZm5ldGxpbmtfc3Vic3lzX3JlZ2lzdGVyKFx1MDAyNm5mX3RhYmxlc19zdWJzeXMpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIyNzctXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEyMjk5PXN0YXRpYyB2b2lkIF9fZXhpdCBuZl90YWJsZXNfbW9kdWxlX2V4aXQodm9pZClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMzAwLXtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEyMzAxOlx0bmZuZXRsaW5rX3N1YnN5c191bnJlZ2lzdGVyKFx1MDAyNm5mX3RhYmxlc19zdWJzeXMpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIzMDItXHRuZXRsaW5rX3VucmVnaXN0ZXJfbm90aWZpZXIoXHUwMDI2bmZ0X25sX25vdGlmaWVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3NTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aXZlIFRob3VnaHQgUHJvY2VzcyoqCgpBbHJpZ2h0LCBzbyB0aGUgY2x1ZSBsZWFkcyBtZSB0byBgbmZuZXRsaW5rX3N1YnN5c2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGFsbCBjb25uZWN0ZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBNeSBwcmltYXJ5IHRhcmdldCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIGBjb21taXRgIGlzIGNhbGxlZC4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHRyYWNpbmcgdGhlIGxvZ2ljIGZsb3cgaGVyZS4gSSYjMzk7bGwgb3BlbiB1cCBgbmZuZXRsaW5rLmNgIGFuZCBzdGFydCBteSBzZWFyY2guIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgc291cmNlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXC5jb21taXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5MzEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcsIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIG5mbmV0bGlua19zdWJzeXMgQ29tbWl0IENhbGxiYWNrKioKCk9rYXksIGhvbGQgb24gYSBtaW51dGUuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBjb21taXRgIGNhbGxiYWNrIHdpdGhpbiB0aGUgYG5mbmV0bGlua19zdWJzeXNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2FsbGJhY2sgYW5kIGhvdyBpdCBmdW5jdGlvbnMgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29udGV4dC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBpdCBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBUaGlzIGBjb21taXRgIGZ1bmN0aW9uIGlzIGxpa2VseSB0aGUgY3J1Y2lhbCBwb2ludCB3aGVyZSBjaGFuZ2VzIGFyZSBmaW5hbGl6ZWQsIG9yIHBlcmhhcHMgd2hlbiB0cmFuc2FjdGlvbnMgYXJlIGNvbXBsZXRlZC4gV2hhdCBhcmUgdGhlIHNwZWNpZmljIG9wZXJhdGlvbnMgdGhhdCBhcmUgdGllZCBpbnRvIHRoaXM/IFdoYXQgdHlwZXMgb2YgZGF0YSBvciBldmVudHMgdHJpZ2dlciB0aGlzIGNhbGxiYWNrPyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgcmVsZWFzZWQgb3IgY29tbWl0dGVkIHdpdGhpbj8gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBpdHMgaW1wbGVtZW50YXRpb24gdG8gZGV0ZXJtaW5lIGl0cyBleGFjdCBiZWhhdmlvciB3aXRoaW4gTmV0ZmlsdGVyJiMzOTtzIGJyb2FkZXIgZnJhbWV3b3JrLiBJcyBpdCBoYW5kbGluZyBtZW1vcnkgYWxsb2NhdGlvbj8gSXMgaXQgY29vcmRpbmF0aW5nIHdpdGggb3RoZXIgTmV0ZmlsdGVyIGNvbXBvbmVudHM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb21taXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM9MzY5PXN0YXRpYyB2b2lkIG5mbmV0bGlua19yY3ZfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy00MDgtXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jOjQwOTpcdGlmICghc3MtXHUwMDNldmFsaWRfZ2VuaWQgfHwgIXNzLVx1MDAzZWNvbW1pdCB8fCAhc3MtXHUwMDNlYWJvcnQpIHtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNDEwLVx0XHRuZm5sX3VubG9jayhzdWJzeXNfaWQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNTczLVx0fSBlbHNlIGlmIChzdGF0dXMgPT0gTkZOTF9CQVRDSF9ET05FKSB7XG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jOjU3NDpcdFx0ZXJyID0gc3MtXHUwMDNlY29tbWl0KG5ldCwgb3NrYik7XG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTU3NS1cdFx0aWYgKGVyciA9PSAtRUFHQUlOKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzkxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIG5mX3RhYmxlcyBDb21taXQvQWJvcnQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGNhbGxzLCBgc3MtJmd0O2NvbW1pdChuZXQsIG9za2IpYCBhbmQgYHNzLSZndDthYm9ydChuZXQsIG9za2IsIE5GTkxfQUJPUlRfTk9ORSlgIGFyZSBkZWZpbml0ZWx5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBUaGF0IG1lYW5zIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXJlIHRoZSByZWxldmFudCBzeW1ib2xzLCB3aGljaCBzZWVtcyByaWdodCwgZ2l2ZW4gdGhlIGNvbnRleHQuCgpXYWl0IGEgc2Vjb25kLi4uIGFyZW4mIzM5O3QgdGhvc2Ugc3RhdGljPyBIbW0sIGFyZSB0aGV5IGlubGluZWQ/IE5vLCB0aGV5JiMzOTtyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBuZl90YWJsZXNfc3Vic3lzYCwgc28gdGhleSAqY2FuJiMzOTt0KiBiZSBpbmxpbmVkLiBUaGF0IG1lYW5zIHRoZXkgd2lsbCBoYXZlIGRpc3RpbmN0LCBpZGVudGlmaWFibGUgc3ltYm9sIGFkZHJlc3Nlcywgd2hpY2ggaXMgZ3JlYXQgZm9yIG91ciBhbmFseXNpcy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZC4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgaXMgc3RhdGljIGFuZCBvbmx5IGNhbGxlZCB3aXRoaW4gYG5mX3RhYmxlc19jb21taXRgLiBJdCAqbWlnaHQqIGJlIGlubGluZWQsIHNvIGl0JiMzOTtzIGxlc3Mgb2YgYSBmb2N1cy4gU2ltaWxhcmx5LCBgX19uZl90YWJsZXNfYWJvcnRgIGlzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgd2l0aGluIGBuZl90YWJsZXNfYWJvcnRgLiBBZ2FpbiwgcG9zc2libGUgaW5saW5pbmcuIFNvLCB5ZXMsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXJlIGRlZmluaXRlbHkgdGhlIGJlc3QgZm9jdXMgcG9pbnRzLgoKTm93LCBsZXQmIzM5O3Mgem9vbSBiYWNrIGluIG9uIHRoZSBwYXRjaCBpdHNlbGYuIE9rYXksIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzIGFyZSBpbnNpZGUgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAsIGp1c3QgYXMgZXhwZWN0ZWQuIFRoZSBnb2FsIGhlcmUgaXMgdG8gY29ycmVjdGx5IG1hcmsgc2V0cyBhcyAmIzM5O2RlYWQmIzM5OyBkdXJpbmcgZGVsZXRpb24gYW5kIGRlc3RydWN0aW9uLCBhbmQgdGhlcmUgaXMgYWxzbyBhbiB1bnVzZWQgbGlzdCBoZWFkIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgYWJvcnQgcGF0aCwgYmFzZWQgb24gdGhlIHJlYXNvbmluZyBnaXZlbi4gVGhlIGVmZmVjdCBvZiB0aGUgY2hhbmdlIGlzIHRvIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMuCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIHdoYXQgSSBuZWVkZWQuIFdpdGggYE5FVEZJTFRFUmAgYW5kIGBORl9UQUJMRVNgIGNvbmZpZ3VyZWQsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXJlIGRlZmluaXRlbHkgdGhlIHJpZ2h0IHN5bWJvbHMgdG8gaW5zcGVjdCBmdXJ0aGVyLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBuYW1pbmcgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfdGFibGVzX2Fib3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTEyNDA9c3RhdGljIHZvaWQgbmZfdGFibGVzX21vZHVsZV9hdXRvbG9hZChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyNTUtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTI1NjpzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjU3LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTI5ND1zdGF0aWMgdm9pZCBuZnRfc2V0X2Fib3J0X3VwZGF0ZShzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMzA3LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEzMDg6c3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEzMDkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDk5LVx0XHRuZnRfdHJhbnNfbGlzdF9kZWwodHJhbnMpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MDA6XHRcdG5mX3RhYmxlc19hYm9ydF9yZWxlYXNlKHRyYW5zKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTAxLVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTA1LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MDY6c3RhdGljIGludCBuZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MDctXHRcdFx0ICAgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MTMtXHRnY19zZXEgPSBuZnRfZ2Nfc2VxX2JlZ2luKG5mdF9uZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MTQ6XHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTUxNS1cdG5mdF9nY19zZXFfZW5kKG5mdF9uZXQsIGdjX3NlcSk7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5ldGxpbmtfc3Vic3lzdGVtIG5mX3RhYmxlc19zdWJzeXMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjAtXHQuY29tbWl0XHRcdD0gbmZfdGFibGVzX2NvbW1pdCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNTYxOlx0LmFib3J0XHRcdD0gbmZfdGFibGVzX2Fib3J0LFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjItXHQudmFsaWRfZ2VuaWRcdD0gbmZfdGFibGVzX3ZhbGlkX2dlbmlkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE5MwoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiAxOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbmZfdGFibGVzIFBhdGNoKioKCk9rYXksIHNvIGBuZl90YWJsZXNfYWJvcnRgICppcyogdGhlIGtleSBmdW5jdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdCwgdGhhdCBjb25maXJtcyBteSBpbml0aWFsIGluc3RpbmN0LiBOb3csIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgY2hlY2sgdG8gbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgYWxsIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBjb3ZlcmVkLiBgTkZfVEFCTEVTYCBpcyB0aGUgb2J2aW91cyBvbmUsIGl0JiMzOTtzIHRoZSBjb3JlIG9mIHRoaXMuIGBORVRGSUxURVJgIGlzIGVzc2VudGlhbCBhcyB3ZWxsLCBvZiBjb3Vyc2UsIHRoZSB1bmRlcmx5aW5nIG5ldGZpbHRlciBmcmFtZXdvcmsuIExldCBtZSBzZWUuLi4gb2gsIGBORVRGSUxURVJfTkVUTElOS2AgaXMgYXV0b21hdGljYWxseSBwdWxsZWQgaW4gYnkgYE5GX1RBQkxFU2AsIHNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIGl0LiBGaW5lLCBgTkZfVEFCTEVTYCBhbG9uZSB3b3VsZCBwcm9iYWJseSBzdWZmaWNlLCBidXQgaXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byBhbHNvIGluY2x1ZGUgYE5FVEZJTFRFUmAgZm9yIGdvb2QgbWVhc3VyZSwganVzdCBpbiBjYXNlLgoKQWxyaWdodCwgdGltZSB0byBwcmVwYXJlIHRoZSBvdXRwdXQuIFRoZSBmdXp6aW5nIGZsYWcsIGBXb3J0aEZ1enppbmdgLCBpcyBkZWZpbml0ZWx5IHRydWUgaGVyZSwgYWJzb2x1dGVseS4gVGhlIHJlYXNvbmluZyBpcyBzb2xpZDogVGhpcyBwYXRjaCYjMzk7cyBwcmltYXJ5IGZ1bmN0aW9uIGlzIHRvIGNvcnJlY3QgaG93IHNldHMgYXJlIG1hcmtlZCBpbiB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBkZWxldGlvbi9kZXN0cnVjdGlvbiwgYW5kIGhvdyB0aGlzIGlzIGFwcGxpZWQgZHVyaW5nIHRyYW5zYWN0aW9ucy4gSXQgYWxzbyByZW1vdmVzIGEgdXNlbGVzcyBsaXN0IGhlYWQuIFRoaXMgY2hhbmdlcyB0aGUgd2F5IHRoYXQgbmZfdGFibGVzIHNldHMgYXJlIG1hbmFnZWQgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgc2luY2UgdGhlIGNoYW5nZXMgZm9jdXMgb24gdGhlbS4gRmluYWxseSwgYmFzZWQgb24gb3VyIGludmVzdGlnYXRpb24sIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGBORVRGSUxURVJgIGFuZCBgTkZfVEFCTEVTYC4gVGhhdCBzZWVtcyBjb21wbGV0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19hYm9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgbmZfdGFibGVzIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgdG8gcHJvcGVybHkgbWFyayBzZXRzIGFzIGRlYWQgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHJlbW92ZXMgYW4gdW51c2VkIGxpc3QgaGVhZCBpbiB0aGUgYWJvcnQgcGF0aC4gVGhpcyBhbHRlcnMgdGhlIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIGFib3J0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAgICYjMzQ7bmZfdGFibGVzX2Fib3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBuZl90YWJsZXMgY29tbWl0IGFuZCBhYm9ydCBsb2dpYyB0byBwcm9wZXJseSBtYXJrIHNldHMgYXMgZGVhZCBkdXJpbmcgZGVsZXRpb24gYW5kIGRlc3RydWN0aW9uLCBhbmQgcmVtb3ZlcyBhbiB1bnVzZWQgbGlzdCBoZWFkIGluIHRoZSBhYm9ydCBwYXRoLiBUaGlzIGFsdGVycyB0aGUgc3RhdGUgbWFuYWdlbWVudCBvZiBuZl90YWJsZXMgc2V0cyBkdXJpbmcgdHJhbnNhY3Rpb24gY29tbWl0cyBhbmQgYWJvcnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzIGBkZWFkYCBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgcGhhc2UgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgIG1lc3NhZ2VzLiBJdCBhbHNvIHJlbW92ZXMgYW4gdW51c2VkIGBzZXRfdXBkYXRlX2xpc3RgIHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIHN0YXRlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbG9naWMgYnVncyBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgYWNjZXNzZXMgdG8gc2V0cyB0aGF0IGFyZSBiZWluZyBkZWxldGVkLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLCBhbmQgbm8gZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGlzIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhODFlNTY2YzJlZDNjNGJhNjViNTQ5NzczNTgxMzI5NjIxOWYyNjgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTM6MjA6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCmluZGV4IGMxMTJlY2M0ZmNhMzIuLjIxMTczMzNmNzVhY2YgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCkBAIC0xMDg5NCw2ICYjNDM7MTA4OTQsMTAgQEAgc3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsCiAJCW5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpOwogCiAJCXN3aXRjaCAodHJhbnMtJmd0O21zZ190eXBlKSB7CiYjNDM7CQljYXNlIE5GVF9NU0dfREVMU0VUOgomIzQzOwkJY2FzZSBORlRfTVNHX0RFU1RST1lTRVQ6CiYjNDM7CQkJbmZ0X3RyYW5zX3NldCh0cmFucyktJmd0O2RlYWQgPSAxOwomIzQzOwkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfREVMU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAkJCWlmICghdGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQpCkBAIC0xMTMwNSw3ICYjNDM7MTEzMDksNiBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pCiB7CiAJc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCA9IG5mdF9wZXJuZXQobmV0KTsKIAlzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7Ci0JTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7CiAJc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTsKIAlzdHJ1Y3QgbmZ0X2N0eCBjdHggPSB7CiAJCS5uZXQgPSBuZXQsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gUmlnaHQgYXdheSwgSSBzZWUgaXQmIzM5O3MgbW9kaWZ5aW5nIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGludHJvZHVjaW5nIHNvbWUgaGFuZGxpbmcgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhlIGtleSBsaW5lIHRoYXQganVtcHMgb3V0IGlzIGBuZnRfdHJhbnNfc2V0KHRyYW5zKS0mZ3Q7ZGVhZCA9IDE7YC4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgLSZndDtkZWFkID0gMTtgLiBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBXaGF0IGRvZXMgdGhpcyBmbGFnIGRvPyBJcyB0aGlzIGFib3V0IG1hcmt0aW5nIHRoZSBgbmZ0X3NldGAgYXMgZGVhZCB3aGVuIGRlbGV0aW5nIG9yIGRlc3Ryb3lpbmcgaXQ/CgpCdXQgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYG5mdF90cmFuc19zZXQodHJhbnMpYCBhY3R1YWxseSAqcmV0dXJucyouICBJcyBpdCBhIGBzdHJ1Y3QgbmZ0X3NldCAqYCwgb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gaXQ/IEkgc2hvdWxkIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBuZnRfdHJhbnNfc2V0YCB0byBiZSBjZXJ0YWluLiBDb250ZXh0IGlzIGtleSBoZXJlOyBpdCBkaWN0YXRlcyB0aGUgaW1wbGljYXRpb25zIG9mIGAtJmd0O2RlYWQgPSAxO2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF90cmFuc19zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0yMjU9c3RhdGljIHZvaWQgX19uZnRfc2V0X3RyYW5zX2JpbmQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9zZXQgKnNldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0yMzgtXHRcdGNhc2UgTkZUX01TR19ORVdTRVQ6XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoyMzk6XHRcdFx0aWYgKG5mdF90cmFuc19zZXQodHJhbnMpID09IHNldClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjI0MDpcdFx0XHRcdG5mdF90cmFuc19zZXRfYm91bmQodHJhbnMpID0gYmluZDtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTI0MS1cdFx0XHRicmVhaztcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz01NjU9c3RhdGljIHZvaWQgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF90cmFucyAqdHJhbnMpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTY4LVx0c3RydWN0IG5mdF90cmFuc19iaW5kaW5nICpiaW5kaW5nO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTY5Olx0c3RydWN0IG5mdF90cmFuc19zZXQgKnRyYW5zX3NldDtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTU3MC1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01ODAtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo1ODE6XHRcdGlmICghbmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTgyOlx0XHQgICAgbmZ0X3NldF9pc19hbm9ueW1vdXMobmZ0X3RyYW5zX3NldCh0cmFucykpKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTgzLVx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2YmluZGluZy1cdTAwM2ViaW5kaW5nX2xpc3QsIFx1MDAyNm5mdF9uZXQtXHUwMDNlYmluZGluZ19saXN0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz03ODM9c3RhdGljIGludCBuZnRfZGVscnVsZV9ieV9jaGFpbihzdHJ1Y3QgbmZ0X2N0eCAqY3R4KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc5OC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjc5OTpzdGF0aWMgaW50IF9fbmZ0X3RyYW5zX3NldF9hZGQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgaW50IG1zZ190eXBlLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODAwLVx0XHRcdCAgICAgICBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwMi17XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MDM6XHRzdHJ1Y3QgbmZ0X3RyYW5zX3NldCAqdHJhbnNfc2V0O1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODA0LVx0c3RydWN0IG5mdF90cmFucyAqdHJhbnM7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDUtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MDY6XHR0cmFucyA9IG5mdF90cmFuc19hbGxvYyhjdHgsIG1zZ190eXBlLCBzaXplb2Yoc3RydWN0IG5mdF90cmFuc19zZXQpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwNy1cdGlmICh0cmFucyA9PSBOVUxMKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgxNC1cdGlmIChtc2dfdHlwZSA9PSBORlRfTVNHX05FV1NFVCBcdTAwMjZcdTAwMjYgY3R4LVx1MDAzZW5sYVtORlRBX1NFVF9JRF0gXHUwMDI2XHUwMDI2ICFkZXNjKSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MTU6XHRcdG5mdF90cmFuc19zZXRfaWQodHJhbnMpID1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgxNi1cdFx0XHRudG9obChubGFfZ2V0X2JlMzIoY3R4LVx1MDAzZW5sYVtORlRBX1NFVF9JRF0pKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MTgtXHR9XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MTk6XHRuZnRfdHJhbnNfc2V0KHRyYW5zKSA9IHNldDtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgyMC1cdGlmIChkZXNjKSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjE6XHRcdG5mdF90cmFuc19zZXRfdXBkYXRlKHRyYW5zKSA9IHRydWU7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjI6XHRcdG5mdF90cmFuc19zZXRfZ2NfaW50KHRyYW5zKSA9IGRlc2MtXHUwMDNlZ2NfaW50O1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODIzOlx0XHRuZnRfdHJhbnNfc2V0X3RpbWVvdXQodHJhbnMpID0gZGVzYy1cdTAwM2V0aW1lb3V0O1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODI0Olx0XHRuZnRfdHJhbnNfc2V0X3NpemUodHJhbnMpID0gZGVzYy1cdTAwM2VzaXplO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODI1LVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzMC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgzMTpzdGF0aWMgaW50IG5mdF90cmFuc19zZXRfYWRkKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIGludCBtc2dfdHlwZSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzMi1cdFx0XHQgICAgIHN0cnVjdCBuZnRfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MzMte1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODM0Olx0cmV0dXJuIF9fbmZ0X3RyYW5zX3NldF9hZGQoY3R4LCBtc2dfdHlwZSwgc2V0LCBOVUxMKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzNS19XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODk1PXN0YXRpYyBpbnQgbmZ0X2RlbHNldChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBzdHJ1Y3QgbmZ0X3NldCAqc2V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg5OC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjg5OTpcdGVyciA9IG5mdF90cmFuc19zZXRfYWRkKGN0eCwgTkZUX01TR19ERUxTRVQsIHNldCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy05MDAtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTQ4MTI9c3RhdGljIHN0cnVjdCBuZnRfc2V0ICpuZnRfc2V0X2xvb2t1cF9ieWlkKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy00ODE3LVx0dTMyIGlkID0gbnRvaGwobmxhX2dldF9iZTMyKG5sYSkpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NDgxODpcdHN0cnVjdCBuZnRfdHJhbnNfc2V0ICp0cmFucztcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTQ4MTktXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9NTQzNj1zdGF0aWMgaW50IG5mX3RhYmxlc19uZXdzZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01NjMyLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTYzMzpcdFx0cmV0dXJuIF9fbmZ0X3RyYW5zX3NldF9hZGQoXHUwMDI2Y3R4LCBORlRfTVNHX05FV1NFVCwgc2V0LCBcdTAwMjZkZXNjKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTU2MzQtXHR9XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTcxNy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjU3MTg6XHRlcnIgPSBuZnRfdHJhbnNfc2V0X2FkZChcdTAwMjZjdHgsIE5GVF9NU0dfTkVXU0VULCBzZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTcxOS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9Njg3ND12b2lkIG5mdF9zZXRfZWxlbV9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNjg4Ni0vKiBEcm9wIHJlZmVyZW5jZXMgYW5kIGRlc3Ryb3kuIENhbGxlZCBmcm9tIGFib3J0IHBhdGguICovXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo2ODg3OnN0YXRpYyB2b2lkIG5mdF90cmFuc19zZXRfZWxlbV9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGUpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy02ODg4LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDI0MD1zdGF0aWMgdm9pZCBuZnRfY29tbWl0X3JlbGVhc2Uoc3RydWN0IG5mdF90cmFucyAqdHJhbnMpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAyNjctXHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVDpcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMjY4Olx0XHRuZnRfc2V0X2Rlc3Ryb3koXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDI2OS1cdFx0YnJlYWs7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA4ODM9c3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4OTgtXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4OTk6XHRcdFx0bmZ0X3RyYW5zX3NldCh0cmFucyktXHUwMDNlZGVhZCA9IDE7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkwMC1cdFx0XHRicmVhaztcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDkzNz1zdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTYxLVx0XHRjYXNlIE5GVF9NU0dfTkVXU0VUOlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5NjI6XHRcdFx0aWYgKCFuZnRfdHJhbnNfc2V0X3VwZGF0ZSh0cmFucykgXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDk2MzpcdFx0XHQgICAgbmZ0X3NldF9pc19hbm9ueW1vdXMobmZ0X3RyYW5zX3NldCh0cmFucykpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5NjQ6XHRcdFx0ICAgICFuZnRfdHJhbnNfc2V0X2JvdW5kKHRyYW5zKSkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5NjUtXHRcdFx0XHRwcl93YXJuX29uY2UoXCYjMzQ7bmZ0YWJsZXMgcnVsZXNldCB3aXRoIHVuYm91bmQgc2V0XFxuXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyMC1cdFx0XHRsaXN0X2RlbChcdTAwMjZuZnRfdHJhbnNfY29udGFpbmVyX3NldCh0cmFucyktXHUwMDNlbGlzdF90cmFuc19uZXdzZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjE6XHRcdFx0aWYgKG5mdF90cmFuc19zZXRfdXBkYXRlKHRyYW5zKSkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjI6XHRcdFx0XHRzdHJ1Y3QgbmZ0X3NldCAqc2V0ID0gbmZ0X3RyYW5zX3NldCh0cmFucyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyMy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTI0Olx0XHRcdFx0V1JJVEVfT05DRShzZXQtXHUwMDNldGltZW91dCwgbmZ0X3RyYW5zX3NldF90aW1lb3V0KHRyYW5zKSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEyNTpcdFx0XHRcdFdSSVRFX09OQ0Uoc2V0LVx1MDAzZWdjX2ludCwgbmZ0X3RyYW5zX3NldF9nY19pbnQodHJhbnMpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTI2LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjc6XHRcdFx0XHRpZiAobmZ0X3RyYW5zX3NldF9zaXplKHRyYW5zKSlcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTI4Olx0XHRcdFx0XHRXUklURV9PTkNFKHNldC1cdTAwM2VzaXplLCBuZnRfdHJhbnNfc2V0X3NpemUodHJhbnMpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTI5LVx0XHRcdH0gZWxzZSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzMDpcdFx0XHRcdG5mdF9jbGVhcihuZXQsIG5mdF90cmFuc19zZXQodHJhbnMpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTMxLVx0XHRcdFx0LyogVGhpcyBhdm9pZHMgaGl0dGluZyAtRUJVU1kgd2hlbiBkZWxldGluZyB0aGUgdGFibGVcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEzMy1cdFx0XHRcdCAqL1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMzQ6XHRcdFx0XHRpZiAobmZ0X3NldF9pc19hbm9ueW1vdXMobmZ0X3RyYW5zX3NldCh0cmFucykpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMzU6XHRcdFx0XHQgICAgIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X3RyYW5zX3NldCh0cmFucyktXHUwMDNlYmluZGluZ3MpKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMzYtXHRcdFx0XHRcdG5mdF91c2VfZGVjKFx1MDAyNnRhYmxlLVx1MDAzZXVzZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEzNy1cdFx0XHR9XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzODpcdFx0XHRuZl90YWJsZXNfc2V0X25vdGlmeShcdTAwMjZjdHgsIG5mdF90cmFuc19zZXQodHJhbnMpLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMzktXHRcdFx0XHRcdCAgICAgTkZUX01TR19ORVdTRVQsIEdGUF9LRVJORUwpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTQzLVx0XHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVDpcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTQ0Olx0XHRcdG5mdF90cmFuc19zZXQodHJhbnMpLVx1MDAzZWRlYWQgPSAxO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExNDU6XHRcdFx0bGlzdF9kZWxfcmN1KFx1MDAyNm5mdF90cmFuc19zZXQodHJhbnMpLVx1MDAzZWxpc3QpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExNDY6XHRcdFx0bmZfdGFibGVzX3NldF9ub3RpZnkoXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTQ3LVx0XHRcdFx0XHQgICAgIHRyYW5zLVx1MDAzZW1zZ190eXBlLCBHRlBfS0VSTkVMKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTI1Nj1zdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI3NS1cdGNhc2UgTkZUX01TR19ORVdTRVQ6XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTI3NjpcdFx0bmZ0X3NldF9kZXN0cm95KFx1MDAyNmN0eCwgbmZ0X3RyYW5zX3NldCh0cmFucykpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyNzctXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyNzgtXHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMjc5Olx0XHRuZnRfdHJhbnNfc2V0X2VsZW1fZGVzdHJveShcdTAwMjZjdHgsIG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucykpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyODAtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExMzA4PXN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQwOS1cdFx0XHRsaXN0X2RlbChcdTAwMjZuZnRfdHJhbnNfY29udGFpbmVyX3NldCh0cmFucyktXHUwMDNlbGlzdF90cmFuc19uZXdzZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0MTA6XHRcdFx0aWYgKG5mdF90cmFuc19zZXRfdXBkYXRlKHRyYW5zKSkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTEtXHRcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTQtXHRcdFx0bmZ0X3VzZV9kZWNfcmVzdG9yZShcdTAwMjZ0YWJsZS1cdTAwM2V1c2UpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0MTU6XHRcdFx0aWYgKG5mdF90cmFuc19zZXRfYm91bmQodHJhbnMpKSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQxNi1cdFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQxOC1cdFx0XHR9XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQxOTpcdFx0XHRuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDIwOlx0XHRcdGxpc3RfZGVsX3JjdShcdTAwMjZuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDIxLVx0XHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDI0LVx0XHRcdG5mdF91c2VfaW5jX3Jlc3RvcmUoXHUwMDI2dGFibGUtXHUwMDNldXNlKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDI1Olx0XHRcdG5mdF9jbGVhcih0cmFucy1cdTAwM2VuZXQsIG5mdF90cmFuc19zZXQodHJhbnMpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDI2Olx0XHRcdGlmIChuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VmbGFncyBcdTAwMjYgKE5GVF9TRVRfTUFQIHwgTkZUX1NFVF9PQkpFQ1QpKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0Mjc6XHRcdFx0XHRuZnRfbWFwX2FjdGl2YXRlKFx1MDAyNmN0eCwgbmZ0X3RyYW5zX3NldCh0cmFucykpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MjgtXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTIyMzk9c3RhdGljIGludCBfX2luaXQgbmZfdGFibGVzX21vZHVsZV9pbml0KHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIyNDUtXHRCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IG5mdF90cmFuc19ydWxlLCBuZnRfdHJhbnMpICE9IDApO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTIyNDY6XHRCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IG5mdF90cmFuc19zZXQsIG5mdF90cmFuc19iaW5kaW5nLm5mdF90cmFucykgIT0gMCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMjI0Ny1cdEJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0sIG5mdF90cmFucykgIT0gMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzQKCQkJCQkJCW91dHB1dDogMTc2CgkJCQkJCQl0aG91Z2h0czogNTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBUYWJsZXMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCBhbmQgYF9fbmZfdGFibGVzX2Fib3J0YC4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCkluIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCB0aGUga2V5IGNoYW5nZSBpcyBhZGRpbmcgaGFuZGxpbmcgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhlIGNyaXRpY2FsIGxpbmUgaXMgYG5mdF90cmFuc19zZXQodHJhbnMpLSZndDtkZWFkID0gMTtgLiAgQWgsIHJpZ2h0LCBzbyBpdCYjMzk7cyBzZXR0aW5nIGEgYGRlYWRgIGZsYWcgb24gdGhlIGBzdHJ1Y3QgbmZ0X3NldGAuIFRoaXMgaXMgY2xhc3NpYyBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFRoaXMgYGRlYWRgIGZsYWcgaXMgdmVyeSBsaWtlbHkgYSBzdGF0ZSBmbGFnLCBwcm9iYWJseSBhaW1lZCBhdCBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIG9yIGEgZG91YmxlLWZyZWUsIG9yIHNvbWUgb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgcmVsYXRlZCB0byBhY2Nlc3NpbmcgYSBzZXQgdGhhdCYjMzk7cyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLiBNYWtlcyBzZW5zZS4gVGhpcyBpcyBnb29kLCBwcm9hY3RpdmUgY29kaW5nLgoKVGhlIG90aGVyIGNoYW5nZSBpcyByZW1vdmluZyBgTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdClgIGluIGBfX25mX3RhYmxlc19hYm9ydGAuIExvb2tzIGxpa2UgYSBkZWFkIHZhcmlhYmxlOyBjbGVhbnVwLiBObyBiaWcgZGVhbC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8uICBUaGlzIHBhdGNoICpzZXRzKiBhIGBkZWFkYCBmbGFnLiBJdCBkb2VzbiYjMzk7dCBhbGxvY2F0ZSBuZXcgbWVtb3J5IG9yIHJlYWQgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQmIzM5O3MganVzdCBtb2RpZnlpbmcgdGhlIGV4aXN0aW5nIHN0YXRlIG9mIGEgYG5mdF9zZXRgLiBUaGlzIGlzIGEgKmZpeCosIG5vdCBhIHNvdXJjZSBvZiBhIHBvdGVudGlhbCBuZXcgdnVsbmVyYWJpbGl0eS4gSXQmIzM5O3MgZml4aW5nIGEgbG9naWMgYnVnLCBhIFVBRiBvciByYWNlIGNvbmRpdGlvbiwgd2hlcmUgYSBzZXQgY291bGQgaGF2ZSBiZWVuIGFjY2Vzc2VkIGFmdGVyIGJlaW5nIGRlbGV0ZWQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY29uc2lkZXIgS01TQU4gc3BlY2lmaWNhbGx5LiAgS01TQU4gaXMgYWxsIGFib3V0IGRldGVjdGluZyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gIEJ1dCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGRvIHRoYXQuIEl0IGp1c3QgKnNldHMqIHRoZSBgZGVhZGAgZmxhZy4gIE5vIG5ldyBtZW1vcnkgaXMgYWxsb2NhdGVkLCBhbmQgbm8gbWVtb3J5IGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBJdCYjMzk7cyBqdXN0IGEgc3RhdGUgdHJhbnNpdGlvbiwgYSBmbGFnIG1vZGlmaWNhdGlvbi4gIFRoaXMgaXNuJiMzOTt0IEtNU0FOIHRlcnJpdG9yeS4gU3RhbmRhcmQgS0FTQU4sIGZvciBkZXRlY3RpbmcgYW55IFVBRiwgZXRjLiwgaXMgc3VmZmljaWVudCBoZXJlLiBUaGlzIGlzIGEgc3RhbmRhcmQgc3RhdGUgbWFuYWdlbWVudCBmaXguCgpTbywgdGhlIHN1bW1hcnkgaXMgdGhpczogVGhlIHBhdGNoIGVuaGFuY2VzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzICYjMzk7ZGVhZCYjMzk7IGR1cmluZyB0aGUgY29tbWl0IHVwZGF0ZSBmb3IgZGVsZXRpb24gKGBORlRfTVNHX0RFTFNFVGAsIGBORlRfTVNHX0RFU1RST1lTRVRgKS4gSXQgYWxzbyBjbGVhbnMgdXAgYSByZWR1bmRhbnQgdmFyaWFibGUuIFRoZXNlIGNoYW5nZXMgYm9sc3RlciBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBndWFyZCBhZ2FpbnN0IGxvZ2ljIGVycm9ycyBsaWtlIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciB1bmF1dGhvcml6ZWQgYWNjZXNzIHRvIHNldHMgc2xhdGVkIGZvciBkZWxldGlvbi4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnRyb2R1Y2VkLCBhbmQgbm8gZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGlzbiYjMzk7dCBhIGNhbmRpZGF0ZSBmb3IgS01TQU4gYW5hbHlzaXMuICBTdGFuZGFyZCBLQVNBTiB3aWxsIGJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IGFueSBtZW1vcnkgY29ycnVwdGlvbiByaXNrcyByZWxhdGVkIHRvIHRoaXMgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzIGBkZWFkYCBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgcGhhc2UgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgIG1lc3NhZ2VzLiBJdCBhbHNvIHJlbW92ZXMgYW4gdW51c2VkIGBzZXRfdXBkYXRlX2xpc3RgIHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIHN0YXRlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbG9naWMgYnVncyBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgYWNjZXNzZXMgdG8gc2V0cyB0aGF0IGFyZSBiZWluZyBkZWxldGVkLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLCBhbmQgbm8gZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGlzIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGZpbHRlciB0YWJsZXMgQVBJIHRvIG1hcmsgYSBzZXQgYXMgYGRlYWRgIGR1cmluZyB0aGUgY29tbWl0IHVwZGF0ZSBwaGFzZSBmb3IgYE5GVF9NU0dfREVMU0VUYCBhbmQgYE5GVF9NU0dfREVTVFJPWVNFVGAgbWVzc2FnZXMuIEl0IGFsc28gcmVtb3ZlcyBhbiB1bnVzZWQgYHNldF91cGRhdGVfbGlzdGAgdmFyaWFibGUuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gc3RhdGUgbWFuYWdlbWVudCBhbmQgcHJldmVudGluZyBsb2dpYyBidWdzIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBhY2Nlc3NlcyB0byBzZXRzIHRoYXQgYXJlIGJlaW5nIGRlbGV0ZWQuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQsIGFuZCBubyBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgS0FTQU4gaXMgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjA0LjE5NjQ1MjQxMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNTMyOTU3MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfdGFibGVzX2NvbW1pdFwiLFxuICAgIFwibmZfdGFibGVzX2Fib3J0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIHRhYmxlcyBBUEkgdG8gbWFyayBhIHNldCBhcyBgZGVhZGAgZHVyaW5nIHRoZSBjb21taXQgdXBkYXRlIHBoYXNlIGZvciBgTkZUX01TR19ERUxTRVRgIGFuZCBgTkZUX01TR19ERVNUUk9ZU0VUYCBtZXNzYWdlcy4gSXQgYWxzbyByZW1vdmVzIGFuIHVudXNlZCBgc2V0X3VwZGF0ZV9saXN0YCB2YXJpYWJsZS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBwcmV2ZW50aW5nIGxvZ2ljIGJ1Z3Mgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIGFjY2Vzc2VzIHRvIHNldHMgdGhhdCBhcmUgYmVpbmcgZGVsZXRlZC4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCwgYW5kIG5vIGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBTdGFuZGFyZCBLQVNBTiBpcyBzdWZmaWNpZW50IGZvciBkZXRlY3RpbmcgYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY29kZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgbmZfdGFibGVzIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgdG8gcHJvcGVybHkgbWFyayBzZXRzIGFzIGRlYWQgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHJlbW92ZXMgYW4gdW51c2VkIGxpc3QgaGVhZCBpbiB0aGUgYWJvcnQgcGF0aC4gVGhpcyBhbHRlcnMgdGhlIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIGFib3J0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MDQuMTk2NDYxODcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDMyOTc2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhODFlNTY2YzJlZDNjNGJhNjViNTQ5NzczNTgxMzI5NjIxOWYyNjgyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDEzOjIwOjAzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcXG5pbmRleCBjMTEyZWNjNGZjYTMyLi4yMTE3MzMzZjc1YWNmIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcXG5AQCAtMTA4OTQsNiArMTA4OTQsMTAgQEAgc3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuIFxcdFxcdG5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpO1xcbiBcXG4gXFx0XFx0c3dpdGNoICh0cmFucy1cXHUwMDNlbXNnX3R5cGUpIHtcXG4rXFx0XFx0Y2FzZSBORlRfTVNHX0RFTFNFVDpcXG4rXFx0XFx0Y2FzZSBORlRfTVNHX0RFU1RST1lTRVQ6XFxuK1xcdFxcdFxcdG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VkZWFkID0gMTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxcbiBcXHRcXHRcXHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XFxuIFxcdFxcdFxcdGlmICghdGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQpXFxuQEAgLTExMzA1LDcgKzExMzA5LDYgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxcbiB7XFxuIFxcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XFxuIFxcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zLCAqbmV4dDtcXG4tXFx0TElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7XFxuIFxcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XFxuIFxcdHN0cnVjdCBuZnRfY3R4IGN0eCA9IHtcXG4gXFx0XFx0Lm5ldCA9IG5ldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MDQuODAwNzc1MDg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjQyNjc3NTM3MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJORl9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gICAgXCJuZl90YWJsZXNfYWJvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgbmZfdGFibGVzIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgdG8gcHJvcGVybHkgbWFyayBzZXRzIGFzIGRlYWQgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHJlbW92ZXMgYW4gdW51c2VkIGxpc3QgaGVhZCBpbiB0aGUgYWJvcnQgcGF0aC4gVGhpcyBhbHRlcnMgdGhlIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIGFib3J0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTgxZTU2NmMyZWQzYzRiYTY1YjU0OTc3MzU4MTMyOTYyMTlmMjY4MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDEzOjIwOjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuaW5kZXggYzExMmVjYzRmY2EzMi4uMjExNzMzM2Y3NWFjZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuQEAgLTEwODk0LDYgKzEwODk0LDEwIEBAIHN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuIFx0XHRuZnRfY3R4X3VwZGF0ZShjdHgsIHRyYW5zKTtcbiBcbiBcdFx0c3dpdGNoICh0cmFucy1cdTAwM2Vtc2dfdHlwZSkge1xuK1x0XHRjYXNlIE5GVF9NU0dfREVMU0VUOlxuK1x0XHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVDpcbitcdFx0XHRuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMTtcbitcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuIFx0XHRcdGlmICghdGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQpXG5AQCAtMTEzMDUsNyArMTEzMDksNiBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4ge1xuIFx0c3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCA9IG5mdF9wZXJuZXQobmV0KTtcbiBcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zLCAqbmV4dDtcbi1cdExJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpO1xuIFx0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbiBcdHN0cnVjdCBuZnRfY3R4IGN0eCA9IHtcbiBcdFx0Lm5ldCA9IG5ldCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjA0LjgwMDc3NzM1NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjg0OTU4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgVGFibGVzIEFQSSBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBoaXR0aW5nIGBuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgaW4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAuIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgc29tZSBsb2dpYyB0aGVyZSB0byBoYW5kbGUgdGhlIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBzZXRzLiBMZXQgbWUgc2VlLi4uIHllcywgaXQncyBzZXR0aW5nIGBuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMWAgd2hlbiBpdCBlbmNvdW50ZXJzIGBORlRfTVNHX0RFTFNFVGAgb3IgYE5GVF9NU0dfREVTVFJPWVNFVGAuIFRoYXQgbWFrZXMgc2Vuc2UuIE1hcmtpbmcgdGhlIHNldCBhcyBcImRlYWRcIiBwcm9iYWJseSBoZWxwcyB3aXRoIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBwcmV2ZW50cyBmdXR1cmUgb3BlcmF0aW9ucyBvbiBpdCwgZWZmZWN0aXZlbHkgc2lnbmFsaW5nIGl0cyBkZW1pc2Ugd2l0aGluIHRoZSB0cmFuc2FjdGlvbi4gSSB3b25kZXIgaWYgdGhlcmUncyBhbnkgZm9sbG93LXVwIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBjbGVhbnVwIGxvZ2ljIGxpbmtlZCB0byB0aGF0IGZsYWcsIG9yIHBlcmhhcHMgZGVmZXJyZWQgY2xlYW51cC5cblxuQW5kIHRoZW4sIGl0IGxvb2tzIGxpa2UgaXQncyByZW1vdmluZyBgTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7YCBmcm9tIGBfX25mX3RhYmxlc19hYm9ydGAuIEhtbSwgdGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhhdCB3YXMgcHJlc2VudCBpbiB0aGUgZmlyc3QgcGxhY2UgYW5kIHdoeSBpdCdzIGJlaW5nIHJlbW92ZWQuIElzIHRoaXMgc29tZSBraW5kIG9mIHJlZmFjdG9yaW5nIG9yIHNpbXBsaWZpY2F0aW9uPyBNYXliZSB0aGUgbGlzdCB3YXNuJ3QgbmVlZGVkIGFueW1vcmUsIG9yIHRoZSBmdW5jdGlvbmFsaXR5IGl0IHByb3ZpZGVkIGhhcyBiZWVuIG1vdmVkIGVsc2V3aGVyZSwgcGVyaGFwcyB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIG9yIGltcHJvdmUgZWZmaWNpZW5jeS4gSSBzaG91bGQgZGlnIGRlZXBlciBpbnRvIHRoYXQgYF9fbmZfdGFibGVzX2Fib3J0YCBmdW5jdGlvbi4gSSB3aWxsIGNoZWNrIHRoZSBjb250ZXh0IG9mIGJvdGggYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMsIGFuZCBjb25maXJtIHdoZXRoZXIgdGhlIHJlbW92YWwgaXMgc2FmZSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjA5Ljg2OTI3NTY5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc4MzgwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfc2V0X2NvbW1pdF91cGRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA4Njg9c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODgyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODgzOnN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODg0LVxcdFxcdFxcdFxcdCAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTM3PXN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxNy1cXHQvKiBzdGVwIDIuICBNYWtlIHJ1bGVzX2dlbl9YIHZpc2libGUgdG8gcGFja2V0IHBhdGggKi9cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAxODpcXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXFx1MDAyNmN0eCwgbmZ0X25ldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjA5Ljk0NzA2NDY4M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTAxMjQzMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgemVyb2luZyBpbiBvbiBhIGNyaXRpY2FsIHNlY3Rpb24gd2l0aGluIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBTcGVjaWZpY2FsbHksIGl0J3MgaW50cm9kdWNpbmcgYSBjb25kaXRpb24gd2hlcmUgYG5mdF90cmFuc19zZXQodHJhbnMpLVx1MDAzZWRlYWQgPSAxO2AgZ2V0cyBzZXQgd2hlbiBgdHJhbnMtXHUwMDNlbXNnX3R5cGVgIGlzIGVpdGhlciBgTkZUX01TR19ERUxTRVRgIG9yIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGRpcmVjdCBhbHRlcmF0aW9uIG9mIGhvdyBuZXRmaWx0ZXIncyBgbmZfdGFibGVzYCBoYW5kbGVzIHNldCBkZWxldGlvbiBhbmQgZGVzdHJ1Y3Rpb24uICBNeSBzcGlkZXkgc2Vuc2UgaXMgdGluZ2xpbmc7IHRoaXMgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0LlwiIFdlIG5lZWQgdG8gcmVhbGx5IGhhbW1lciB0aGlzIHdpdGggYSBmdXp6aW5nIGNhbXBhaWduLiBUaGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgY2hhbmdlcyBkdXJpbmcgdGhvc2Ugc3BlY2lmaWMgc2V0IG9wZXJhdGlvbnMgaXMgZGVmaW5pdGVseSB0aGVyZS5cblxuQmVmb3JlIHdlIHN0YXJ0IGZ1enppbmcsIGxldCdzIHRha2UgYSBtaW51dGUgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHByZXJlcXVpc2l0ZXMuIFdlIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHdlJ3JlIHdvcmtpbmcgd2l0aCBhIHN5c3RlbSBwcm9wZXJseSBzZXQgdXAgdG8gZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB3aGljaCBrZXJuZWwgY29uZmlncyBhcmUgbmVjZXNzYXJ5IHRvIGVuYWJsZSBhbGwgdGhlIHJlbGV2YW50IGZlYXR1cmVzIG9mIGBuZl90YWJsZXNgIHRoYXQgYXJlIHRpZWQgaW50byB0aGlzIGxvZ2ljLiBHb3R0YSBlbnN1cmUgd2UncmUgdGFyZ2V0aW5nIHRoZSByaWdodCBjb25maWd1cmF0aW9uLCBvciB3ZSdyZSB3YXN0aW5nIHZhbHVhYmxlIGZ1enppbmcgdGltZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjE0LjY5NzE5MTgyNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg5MDM2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ1Mz1lbmRpZiAjIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1Ni1cXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NzE9aWYgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVxcdGRlcGVuZHMgb24gSVBWNlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDgwOmNvbmZpZyBORl9UQUJMRVNfTkVUREVWXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MTQuODU2MTA0MDIxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNzQ5MzA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaXMgYE5GX1RBQkxFU2AuIFRoYXQncyB0aGUgY29uZmlnIGl0ZW0gd2UncmUgZm9jdXNpbmcgb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgKm90aGVyKiBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucyBsdXJraW5nIGFyb3VuZC4gVGhlcmUncyBhbG1vc3QgY2VydGFpbmx5IG1vcmUgdG8gdGhlIHN0b3J5IHRoYW4ganVzdCB0aGlzIHNpbmdsZSBzZXR0aW5nLiBJIG5lZWQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IGJlZm9yZSBJIHN0YXJ0IHRvIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgaG93IGBORl9UQUJMRVNgIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIFdlIG5lZWQgdGhlIGxheSBvZiB0aGUgbGFuZCwgYXMgdGhpcyBtaWdodCBiZSB0aGUgb25seSBjb25maWcgZmlsZSBvZiBpdHMga2luZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyMSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjE5LjE2MzU5OTI2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkyMjM0ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9UQUJMRVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctNS0jXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZfVEFCTEVTX0JSSURHRVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctNy1cXHRkZXBlbmRzIG9uIEJSSURHRSBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVIgXFx1MDAyNlxcdTAwMjYgTkZfVEFCTEVTXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0zMz1pZiBORl9UQUJMRVNcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzozNTpjb25maWcgTkZfVEFCTEVTX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJJUHY0IG5mX3RhYmxlcyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9NjI9ZW5kaWYgIyBORl9UQUJMRVNfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTYzLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjY0OmNvbmZpZyBORl9UQUJMRVNfQVJQXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiQVJQIG5mX3RhYmxlcyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Mjk9aWYgTkZfVEFCTEVTXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzAtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MzE6Y29uZmlnIE5GX1RBQkxFU19JUFY2XFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzItXFx0Ym9vbCBcXFwiSVB2NiBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTU6Y29uZmlnIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIElQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjIxLjQ1NTgzOTI4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTMyMDkzMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBuZl90YWJsZXMgQ29tbWl0IFVwZGF0ZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBhbmQgaXQncyBkZWZpbmVkIHdpdGhpbiBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgLiBUaGlzIGlzIHBhcnQgb2YgdGhlIGBORl9UQUJMRVNgIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBhIGJpdC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGFuZCwgb2YgY291cnNlLCB0aGUgZnVuY3Rpb24gaXQgY2FsbHMsIGBfX25mX3RhYmxlc19hYm9ydGAuIEJ1dCB3YWl0Li4uIHRoaXMgaXMgc3RhdGljLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIGNhbGxzLCBzbyBJIG5lZWQgdG8gc2VlIGlmIGl0J3MgaW5saW5lZC4gTGV0IG1lIGNoZWNrIHRoZSBkaXNhc3NlbWJseSB0byBzZWUgaWYgdGhlIHN0YXRpYyBrZXl3b3JkIGlzIGFjdHVhbGx5IGluIHRoZSBjb21waWxlZCBvdXRwdXQsIG9yIGlmIGl0IGhhcyBiZWVuIG9wdGltaXplZCBhd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MjUuMzA5MDUzMTI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mzg4Nzk2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfc2V0X2NvbW1pdF91cGRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA4Njg9c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODgyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODgzOnN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODg0LVxcdFxcdFxcdFxcdCAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTM3PXN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxNy1cXHQvKiBzdGVwIDIuICBNYWtlIHJ1bGVzX2dlbl9YIHZpc2libGUgdG8gcGFja2V0IHBhdGggKi9cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAxODpcXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXFx1MDAyNmN0eCwgbmZ0X25ldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjI1LjQwMjk0ODEyM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI0MjUzMTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGludGVybmFscyBhbmQgbmV0ZmlsdGVyOlxuXG4qKklubGluaW5nIGFuZCBTdGF0aWMgU2NvcGUgaW4gbmZfdGFibGVzX2NvbW1pdCoqXG5cbkhtbSwgdGhpcyBgbmZfdGFibGVzX2NvbW1pdGAgZnVuY3Rpb24uLi4gSXQgc2VlbXMgc3RhdGljIGFuZCwgZnJvbSB3aGF0IEkgY2FuIHNlZSwgaXMgb25seSBldmVyIGNhbGxlZCBvbmNlLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZl90YWJsZXNfY29tbWl0YCBpdHNlbGYuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgdG8gbWUgdGhhdCBpdCdzIHByaW1lIHJlYWwgZXN0YXRlIGZvciBpbmxpbmluZy4gVGhlIGNvbXBpbGVyIGlzIHByb2JhYmx5IG9wdGltaXppbmcgaXQgdGhhdCB3YXkgdG8gYXZvaWQgdGhlIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgZ2l2ZW4gaXRzIGxpbWl0ZWQgc2NvcGUuXG5cblNpbmNlIGBuZl90YWJsZXNfY29tbWl0YCBpdHNlbGYgaXMgYWxzbyBzdGF0aWMsIEknbSBnZXR0aW5nIGN1cmlvdXMgYWJvdXQgdGhlIGNhbGwgY2hhaW4gYW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gTGV0IG1lIHF1aWNrbHkgdHJhY2Ugd2hlcmUgKml0KiBpcyBjYWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhIGJpdCBiZXR0ZXIuIFRoaXMgY291bGQgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgZGV0YWlscyBhYm91dCBob3cgbmV0ZmlsdGVyIHRhYmxlcyBhcmUgYWN0dWFsbHkgY29tbWl0dGVkIGFuZCBhcHBsaWVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3ODgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDoyOS4yMjcyMDQ1NjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzY4MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlc19jb21taXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTAzMTg9RVhQT1JUX1NZTUJPTF9HUEwobmZfdGFibGVzX3RyYW5zX2Rlc3Ryb3lfZmx1c2hfd29yayk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzMTktXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzMjA6c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMyMS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDM5NC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDM5NTpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDM5Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQxMC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQxMTpzdGF0aWMgdm9pZCBfX25mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlcyhzdHJ1Y3QgcmN1X2hlYWQgKmgpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTctXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTg6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChzdHJ1Y3QgbmZ0X3J1bGVfYmxvYiAqYmxvYilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQxOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyNS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQyNjpcXHRjYWxsX3JjdShcXHUwMDI2bGFzdC1cXHUwMDNlaCwgX19uZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDI3LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyOC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQyOTpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2NoYWluKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4pXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MzAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NTEtXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGNoYWluLVxcdTAwM2VibG9iX2dlbl8xLCBnMCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NTI6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NTMtXFx0XFx0fSBlbHNlIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ1NC1cXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoY2hhaW4tXFx1MDAzZWJsb2JfZ2VuXzAsIGcxKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ1NTpcXHRcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXNfb2xkKGcwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ1Ni1cXHRcXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ3MS1cXHRpZiAobmV4dF9nZW5iaXQpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NzI6XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NzMtXFx0ZWxzZVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDc0OlxcdFxcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDc1LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwNzI0PXN0YXRpYyB2b2lkIG5mX3RhYmxlc19tb2R1bGVfYXV0b2xvYWRfY2xlYW51cChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDczNi1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDczNzpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X3JlbGVhc2Uoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzM4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwNzcxPXN0YXRpYyB2b2lkIG5mdF9jb21taXRfbm90aWZ5KHN0cnVjdCBuZXQgKm5ldCwgdTMyIHBvcnRpZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODA2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODA3OnN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9hbGxvYyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MDgtXFx0XFx0XFx0XFx0XFx0c3RydWN0IG5mdF90YWJsZSAqdGFibGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgyMy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgyNDpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2ZyZWUoc3RydWN0IGxpc3RfaGVhZCAqYWRsKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODI1LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODM2LSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODM3OnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9lbnRyeWNvdW50KGNvbnN0IHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODM4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODQ3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODQ4OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfY29sbGVjdChzdHJ1Y3QgbGlzdF9oZWFkICphZGwsXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4NDktXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG5mdF90cmFucyAqdHJhbnMsIHUzMiBvcClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODYwLWZvdW5kOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODYxOlxcdGFkcC1cXHUwMDNlZW50cmllcyArPSBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2VudHJ5Y291bnQodHJhbnMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODYyLVxcdGlmICghYWRwLVxcdTAwM2VvcCB8fCBhZHAtXFx1MDAzZW9wIFxcdTAwM2Ugb3ApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg2Ny1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDg2ODpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODY5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTMyPXN0YXRpYyB2b2lkIG5mdF9nY19zZXFfZW5kKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQsIHVuc2lnbmVkIGludCBnY19zZXEpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkzNi1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDkzNzpzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTM4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTk3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTk4OlxcdFxcdHJldCA9IG5mX3RhYmxlc19jb21taXRfYXVkaXRfYWxsb2MoXFx1MDAyNmFkbCwgdGFibGUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTk5LVxcdFxcdGlmIChyZXQpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwMDpcXHRcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKG5ldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEwMDE6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKFxcdTAwMjZhZGwpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDAyLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAwNy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwODpcXHRcXHRcXHRyZXQgPSBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmUobmV0LCBjaGFpbik7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMDktXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAxMDpcXHRcXHRcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKG5ldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEwMTE6XFx0XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKFxcdTAwMjZhZGwpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDEyLVxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAyMS1cXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoYWluLCBcXHUwMDI2dGFibGUtXFx1MDAzZWNoYWlucywgbGlzdClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAyMjpcXHRcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluKG5ldCwgY2hhaW4pO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDIzLVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDQ1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDQ2OlxcdFxcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfY29sbGVjdChcXHUwMDI2YWRsLCB0cmFucywgdHJhbnMtXFx1MDAzZW1zZ190eXBlKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTA0Ny1cXHRcXHRzd2l0Y2ggKHRyYW5zLVxcdTAwM2Vtc2dfdHlwZSkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzAtXFx0bmZfdGFibGVzX2dlbl9ub3RpZnkobmV0LCBza2IsIE5GVF9NU0dfTkVXR0VOKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTIzMTpcXHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhcXHUwMDI2YWRsLCBuZnRfYmFzZV9zZXEobmV0KSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzItXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTIzNC1cXHRuZnRfbmV0LVxcdTAwM2V2YWxpZGF0ZV9zdGF0ZSA9IE5GVF9WQUxJREFURV9TS0lQO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMjM1OlxcdG5mX3RhYmxlc19jb21taXRfcmVsZWFzZShuZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjM2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5ldGxpbmtfc3Vic3lzdGVtIG5mX3RhYmxlc19zdWJzeXMgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU1OS1cXHQuY2JcXHRcXHQ9IG5mX3RhYmxlc19jYixcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU2MDpcXHQuY29tbWl0XFx0XFx0PSBuZl90YWJsZXNfY29tbWl0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTYxLVxcdC5hYm9ydFxcdFxcdD0gbmZfdGFibGVzX2Fib3J0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDoyOS4yODU1ODA1MTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5MDg2MDAyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBUYWJsZXMgQ29tbWl0IENhbGxiYWNrKipcblxuT2theSwgc28gYG5mX3RhYmxlc19jb21taXRgIGlzIHRoZSBjcml0aWNhbCBjb21taXQgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBgbmZfdGFibGVzX3N1YnN5c2AsIGdvdCBpdC4gQW5kIGBfX25mX3RhYmxlc19hYm9ydGAgaXMgY2FsbGVkIGJ5IGBuZl90YWJsZXNfYWJvcnRgLiBUaGVzZSBhcmUgYm90aCByZWFjaGFibGUgZnVuY3Rpb25zLCBzbyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhleSdyZSBkZWZpbml0ZWx5IHRhcmdldHMuIFdlIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byB0aGVzZSwgYW5kIEknbGwgZm9jdXMgb24gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgLiBIbW0sIHdhaXQgYSBtaW51dGUsIGBfX25mX3RhYmxlc19hYm9ydGAgaXMgc3RhdGljPyBUaGF0IG1lYW5zIGl0J3MgbGlrZWx5IG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQgaXQncyBkZWZpbmVkIGluLiBOZWVkIHRvIGNoZWNrIGlmIGl0J3MgaW5saW5lZC4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gb3B0aW1pemVkIGF3YXkgYW5kIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBXZSBuZWVkIHRvIGNoZWNrIHRoZSBhc3NlbWJseSBvciBnZW5lcmF0ZWQgY29kZSB0byBzZWUgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY2NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjMyLjk3NjQ0MzczN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1MjgwNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19uZl90YWJsZXNfYWJvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTEyOTQ9c3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMzA3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMzA4OnN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTMwOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTUwNj1zdGF0aWMgaW50IG5mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTUxMy1cXHRnY19zZXEgPSBuZnRfZ2Nfc2VxX2JlZ2luKG5mdF9uZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNTE0OlxcdHJldCA9IF9fbmZfdGFibGVzX2Fib3J0KG5ldCwgYWN0aW9uKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTUxNS1cXHRuZnRfZ2Nfc2VxX2VuZChuZnRfbmV0LCBnY19zZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDozMy4wNTU5NzYxMTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2MjA0Mjg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMaW5lIG9mIElucXVpcnk6IEFib3J0aW5nIE5ldGZpbHRlciBUYWJsZXMqKlxuXG5Pa2F5LCBzbyBgX19uZl90YWJsZXNfYWJvcnRgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgbmZfdGFibGVzX2Fib3J0YC4gUmlnaHQsIGBuZl90YWJsZXNfYWJvcnRgIGZ1bmN0aW9ucyBhcyB0aGUgYWJvcnQgY2FsbGJhY2sgZm9yIHRoZSBgbmZfdGFibGVzX3N1YnN5c2AuIFNvLCBzdHJhdGVnaWNhbGx5LCBJIGNhbiB6ZXJvIGluIG9uIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXMgbXkga2V5IGZvY3VzIHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGhlcmUuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQgbWUganVzdCBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQWgsIHllcywgYE5GX1RBQkxFU2AgaXRzZWxmIGlzIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24uIEhhbmcgb24uLi4gYE5GX1RBQkxFU2AgKmRlcGVuZHMqIG9uIGBORVRGSUxURVJgLiBSaWdodCwgZ290IGl0LiBCZXR0ZXIgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYE5FVEZJTFRFUmAgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNzQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MzYuOTE4MDIyNzM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjc0NDA0NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTI9bWVudSBcXFwiQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1OmNvbmZpZyBORVRGSUxURVJfSU5HUkVTU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBpbmdyZXNzIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzOmNvbmZpZyBORVRGSUxURVJfRUdSRVNTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBlZ3Jlc3Mgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjE6Y29uZmlnIE5FVEZJTFRFUl9TS0lQX0VHUkVTU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMi1cXHRkZWZfYm9vbCBORVRGSUxURVJfRUdSRVNTIFxcdTAwMjZcXHUwMDI2IChORVRfQ0xTX0FDVCB8fCBJRkIpXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNDpjb25maWcgTkVURklMVEVSX05FVExJTktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjUtXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc6Y29uZmlnIE5FVEZJTFRFUl9GQU1JTFlfQlJJREdFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI4LVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjMwOmNvbmZpZyBORVRGSUxURVJfRkFNSUxZX0FSUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMS1cXHRib29sXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMzpjb25maWcgTkVURklMVEVSX0JQRl9MSU5LXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0LVxcdGRlZl9ib29sIEJQRl9TWVNDQUxMXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjpjb25maWcgTkVURklMVEVSX05FVExJTktfSE9PS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGJhc2UgaG9vayBkdW1wIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ2OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19BQ0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZBQ0NUIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjYyOmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjMtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NDpjb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgT1NGIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTA9aWYgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMTpjb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zODU9Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzk3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozOTg6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzk5LVxcdGJvb2wgXFxcIk5GUVVFVUUgYW5kIE5GTE9HIGludGVncmF0aW9uIHdpdGggQ29ubmVjdGlvbiBUcmFja2luZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NDc9Y29uZmlnIE5GX05BVF9PVlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1MDpjb25maWcgTkVURklMVEVSX1NZTlBST1hZXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1MS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTcyMT1jb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjcyOTpjb25maWcgTkVURklMVEVSX1hUQUJMRVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzMwLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgWHRhYmxlcyBzdXBwb3J0IChyZXF1aXJlZCBmb3IgaXBfdGFibGVzKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MzY9aWYgTkVURklMVEVSX1hUQUJMRVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzM3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3Mzg6Y29uZmlnIE5FVEZJTFRFUl9YVEFCTEVTX0NPTVBBVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MzktXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIFh0YWJsZXMgMzJiaXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjc0Nzpjb25maWcgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc0OC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbGVnYWN5IHRhYmxlcyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTc1Nz1jb21tZW50IFxcXCJYdGFibGVzIGNvbWJpbmVkIG1vZHVsZXNcXFwiXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc1OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzU5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NjAtXFx0dHJpc3RhdGUgJ25mbWFyayB0YXJnZXQgYW5kIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzcyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NzM6Y29uZmlnIE5FVEZJTFRFUl9YVF9DT05OTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NzQtXFx0dHJpc3RhdGUgJ2N0bWFyayB0YXJnZXQgYW5kIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzg0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3ODU6Y29uZmlnIE5FVEZJTFRFUl9YVF9TRVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzg2LVxcdHRyaXN0YXRlICdzZXQgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTc5OT1jb21tZW50IFxcXCJYdGFibGVzIHRhcmdldHNcXFwiXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgwMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODAxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0FVRElUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgwMi1cXHR0cmlzdGF0ZSBcXFwiQVVESVQgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4MTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ0hFQ0tTVU1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEyLVxcdHRyaXN0YXRlIFxcXCJDSEVDS1NVTSB0YXJnZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MjYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyNzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MjgtXFx0dHJpc3RhdGUgJ1xcXCJDTEFTU0lGWVxcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODM4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mzk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODQwLVxcdHRyaXN0YXRlICAnXFxcIkNPTk5NQVJLXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NDgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjg0OTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DT05OU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NTAtXFx0dHJpc3RhdGUgJ1xcXCJDT05OU0VDTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODYwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4NjE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODYyLVxcdHRyaXN0YXRlICdcXFwiQ1RcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg3Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODczOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1BcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODc0LVxcdHRyaXN0YXRlICdcXFwiRFNDUFxcXCIgYW5kIFxcXCJUT1NcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg4OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODg5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0hMXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg5MC1cXHR0cmlzdGF0ZSAnXFxcIkhMXFxcIiBob3BsaW1pdCB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjkwNDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ITUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MDUtXFx0dHJpc3RhdGUgJ1xcXCJITUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTE3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MTg6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfSURMRVRJTUVSXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTkxOS1cXHR0cmlzdGF0ZSAgXFxcIklETEVUSU1FUiB0YXJnZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjkzMDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9MRURcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTMxLVxcdHRyaXN0YXRlICdcXFwiTEVEXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjk1NDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9MT0dcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTU1LVxcdHRyaXN0YXRlIFxcXCJMT0cgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTY0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NjU6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NjYtXFx0dHJpc3RhdGUgJ1xcXCJNQVJLXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NzMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjk3NDpjb25maWcgTkVURklMVEVSX1hUX05BVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NzUtXFx0dHJpc3RhdGUgJ1xcXCJTTkFUIGFuZCBETkFUXFxcIiB0YXJnZXRzIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTgxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5ODI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkVUTUFQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk4My1cXHR0cmlzdGF0ZSAnXFxcIk5FVE1BUFxcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTkxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5OTI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0dcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTkzLVxcdHRyaXN0YXRlICdcXFwiTkZMT0dcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMDEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMDI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkZRVUVVRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDAzLVxcdHRyaXN0YXRlICdcXFwiTkZRVUVVRVxcXCIgdGFyZ2V0IFN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAxMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTAxNDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9OT1RSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMTUtXFx0dHJpc3RhdGUgICdcXFwiTk9UUkFDS1xcXCIgdGFyZ2V0IHN1cHBvcnQgKERFUFJFQ0FURUQpJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMjAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMjE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDIyLVxcdHRyaXN0YXRlICdcXFwiUkFURUVTVFxcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAzMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTAzMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9SRURJUkVDVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDMyLVxcdHRyaXN0YXRlIFxcXCJSRURJUkVDVCB0YXJnZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDQyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDQzOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX01BU1FVRVJBREVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA0NC1cXHR0cmlzdGF0ZSBcXFwiTUFTUVVFUkFERSB0YXJnZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDU2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDU3OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RFRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDU4LVxcdHRyaXN0YXRlICdcXFwiVEVFXFxcIiAtIHBhY2tldCBjbG9uaW5nIHRvIGFsdGVybmF0ZSBkZXN0aW5hdGlvbidcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDY3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDY4OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RQUk9YWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDY5LVxcdHRyaXN0YXRlICdcXFwiVFBST1hZXFxcIiB0YXJnZXQgdHJhbnNwYXJlbnQgcHJveHlpbmcgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDg4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDg5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RSQUNFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwOTAtXFx0dHJpc3RhdGUgICdcXFwiVFJBQ0VcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMDAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMDE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTAyLVxcdHRyaXN0YXRlICdcXFwiU0VDTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTExMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTExMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTExMi1cXHR0cmlzdGF0ZSAnXFxcIlRDUE1TU1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEzNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTEzNzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTM4LVxcdHRyaXN0YXRlICdcXFwiVENQT1BUU1RSSVBcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTExNDc9Y29tbWVudCBcXFwiWHRhYmxlcyBtYXRjaGVzXFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTQ4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTQ5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQUREUlRZUEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1MC1cXHR0cmlzdGF0ZSAnXFxcImFkZHJ0eXBlXFxcIiBhZGRyZXNzIHR5cGUgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTU4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTU5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQlBGXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNjAtXFx0dHJpc3RhdGUgJ1xcXCJicGZcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE2ODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NHUk9VUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTY5LVxcdHRyaXN0YXRlICdcXFwiY29udHJvbCBncm91cFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTc3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTc4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ0xVU1RFUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTc5LVxcdHRyaXN0YXRlICdcXFwiY2x1c3RlclxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTkzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTk0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTk1LVxcdHRyaXN0YXRlICAnXFxcImNvbW1lbnRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIwMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIwNDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5CWVRFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjA1LVxcdHRyaXN0YXRlICAnXFxcImNvbm5ieXRlc1xcXCIgcGVyLWNvbm5lY3Rpb24gY291bnRlciBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTEFCRUxcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIxNi1cXHR0cmlzdGF0ZSAnXFxcImNvbm5sYWJlbFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjI4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMjktXFx0dHJpc3RhdGUgJ1xcXCJjb25ubGltaXRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIzNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5NQVJLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzgtXFx0dHJpc3RhdGUgICdcXFwiY29ubm1hcmtcXFwiIGNvbm5lY3Rpb24gbWFyayBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNDc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0OC1cXHR0cmlzdGF0ZSAnXFxcImNvbm50cmFja1xcXCIgY29ubmVjdGlvbiB0cmFja2luZyBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNTktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNjA6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DUFVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI2MS1cXHR0cmlzdGF0ZSAnXFxcImNwdVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjY4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjY5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRENDUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjcwLVxcdHRyaXN0YXRlICdcXFwiZGNjcFxcXCIgcHJvdG9jb2wgbWF0Y2ggc3VwcG9ydCAoREVQUkVDQVRFRCknXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI4MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RFVkdST1VQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyODItXFx0dHJpc3RhdGUgJ1xcXCJkZXZncm91cFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjg5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjkwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRFNDUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjkxLVxcdHRyaXN0YXRlICdcXFwiZHNjcFxcXCIgYW5kIFxcXCJ0b3NcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMwNC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMwNTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0VDTlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzA2LVxcdHRyaXN0YXRlICdcXFwiZWNuXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9FU1BcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMxNS1cXHR0cmlzdGF0ZSAnXFxcImVzcFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzIyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzIzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSEFTSExJTUlUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMjQtXFx0dHJpc3RhdGUgJ1xcXCJoYXNobGltaXRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMzNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMzODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0hFTFBFUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzM5LVxcdHRyaXN0YXRlICdcXFwiaGVscGVyXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNDctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNDg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9ITFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzQ5LVxcdHRyaXN0YXRlICdcXFwiaGxcXFwiIGhvcGxpbWl0L1RUTCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNTY6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9JUENPTVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM1Ny1cXHR0cmlzdGF0ZSAnXFxcImlwY29tcFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzY0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzY1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzY2LVxcdHRyaXN0YXRlICdcXFwiaXByYW5nZVxcXCIgYWRkcmVzcyByYW5nZSBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNzQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNzU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9JUFZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNzYtXFx0dHJpc3RhdGUgJ1xcXCJpcHZzXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzODQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzODU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9MMlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzODYtXFx0dHJpc3RhdGUgJ1xcXCJsMnRwXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzOTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzOTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEhcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM5Ni1cXHR0cmlzdGF0ZSAnXFxcImxlbmd0aFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDAzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDA0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTElNSVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQwNS1cXHR0cmlzdGF0ZSAnXFxcImxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQxNS1cXHR0cmlzdGF0ZSAnXFxcIm1hY1xcXCIgYWRkcmVzcyBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NQVJLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MjQtXFx0dHJpc3RhdGUgJ1xcXCJtYXJrXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MzEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MzI6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQzMy1cXHR0cmlzdGF0ZSAnXFxcIm11bHRpcG9ydFxcXCIgTXVsdGlwbGUgcG9ydCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NDEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NDI6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9ORkFDQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ0My1cXHR0cmlzdGF0ZSAnXFxcIm5mYWNjdFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDUxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDUyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfT1NGXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NTMtXFx0dHJpc3RhdGUgJ1xcXCJvc2ZcXFwiIFBhc3NpdmUgT1MgZmluZ2VycHJpbnQgbWF0Y2gnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ2NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ2Njpjb25maWcgTkVURklMVEVSX1hUX01BVENIX09XTkVSXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NjctXFx0dHJpc3RhdGUgJ1xcXCJvd25lclxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDc0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NzUtXFx0dHJpc3RhdGUgJ0lQc2VjIFxcXCJwb2xpY3lcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ4NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BIWVNERVZcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ4Ni1cXHR0cmlzdGF0ZSAnXFxcInBoeXNkZXZcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ5NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5Ni1cXHR0cmlzdGF0ZSAnXFxcInBrdHR5cGVcXFwiIHBhY2tldCB0eXBlIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUwNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUwNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1FVT1RBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MDgtXFx0dHJpc3RhdGUgJ1xcXCJxdW90YVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTE2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTE3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTE4LVxcdHRyaXN0YXRlICdcXFwicmF0ZWVzdFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTI3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyOC1cXHR0cmlzdGF0ZSAgJ1xcXCJyZWFsbVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTQwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTQxOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkVDRU5UXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NDItXFx0dHJpc3RhdGUgJ1xcXCJyZWNlbnRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU1MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU1MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU1Mi1cXHR0cmlzdGF0ZSAgJ1xcXCJzY3RwXFxcIiBwcm90b2NvbCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1NjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TT0NLRVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2NC1cXHR0cmlzdGF0ZSAnXFxcInNvY2tldFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTc5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTgwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4MS1cXHR0cmlzdGF0ZSAnXFxcInN0YXRlXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1OTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU5Mi1cXHR0cmlzdGF0ZSAnXFxcInN0YXRpc3RpY1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTk5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjAwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MDEtXFx0dHJpc3RhdGUgICdcXFwic3RyaW5nXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MTItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE2MTM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9UQ1BNU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYxNC1cXHR0cmlzdGF0ZSAnXFxcInRjcG1zc1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjIyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjIzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVElNRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjI0LVxcdHRyaXN0YXRlICdcXFwidGltZVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjM2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MzgtXFx0dHJpc3RhdGUgJ1xcXCJ1MzJcXFwiIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjM3LjQ0NTQ2ODM3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkyMTYyODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gaGVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgYE5FVEZJTFRFUmAgaXMgdGhlIGNlbnRyYWwgcGllY2UsIG9idmlvdXNseS4gVGhhdCBhbHNvIG1lYW5zIGBORl9UQUJMRVNgIGlzIGNyaXRpY2FsIGluIGFsbCB0aGlzLiBOb3csIEkgd2FudCB0byB0cmFjZSB0aGUgY29tbWl0L2Fib3J0IGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIEknbGwgY2hlY2sgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gSG1tLCByaWdodC4uLiBgbmZfdGFibGVzX2NvbW1pdGAgaXMgc3RhdGljLiBUaGF0IHVzdWFsbHkgbWVhbnMgaXQncyBsb2NhbGl6ZWQsIGEgaGVscGVyIHdpdGhpbiBpdHMgb3duIHNjb3BlLiBPa2F5LCB0aGUgbmV4dCB0aGluZyBpcyB0byBkZXRlcm1pbmUgd2hvJ3MgY2FsbGluZyBpdD8gSXMgdGhlcmUgYSBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGlzPyBBaGEhIEhlcmUgd2UgZ28sIGBuZl90YWJsZXNfY29tbWl0YCBpcyBjYWxsZWQgYnkgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGluIGBuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jYC4gVGhhdCdzIHRoZSBsaW5rIEkgd2FzIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDcwMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDo0Mi4xMzc2MzUwNDJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNjY1NTg4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjQyLjIwMDMxMzU3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjEyNTQwOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgSW50ZXJuYWxzOiBBIFF1aWNrIE9ic2VydmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMganVzdCB0cmFjaW5nIHRocm91Z2ggdGhlIG5ldGZpbHRlciBjb2RlLCBhbmQgSSBuZWVkIHRvIHJlY2FsaWJyYXRlIG15IG1lbnRhbCBtb2RlbCBmb3IgYSBtb21lbnQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIHJlZ2lzdHJhdGlvbiBvZiBgbmZfdGFibGVzX2NvbW1pdGAgd2FzIGhhcHBlbmluZyBlbHNld2hlcmUsIGJ1dCBoYW5nIG9uLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUgbm93LCBJIHNlZSBpdCdzIGFjdHVhbGx5IHJlZ2lzdGVyZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBgbmZfdGFibGVzX3N1YnN5c2Agc3RydWN0dXJlLiBUaGlzIGxpa2VseSBhZmZlY3RzIGhvdyBpdCBpcyBhY3RpdmF0ZWQgLSBJIG5lZWQgdG8gYWRqdXN0IG15IG1lbnRhbCBwYXRoIGZyb20gaG93IHRoaXMgaXMgY2FsbGVkLiBJIGhhZCBhc3N1bWVkIHNvbWUga2luZCBvZiBpbmRpcmVjdCByZWdpc3RyYXRpb24sIHBlcmhhcHMgdHJpZ2dlcmVkIGJ5IGEgbW9kdWxlIGxvYWQuIENsZWFybHksIHRoYXQgaXMgbm90IHRoZSBjYXNlLiBUaGlzIGRpcmVjdCByZWdpc3RyYXRpb24gbGlrZWx5IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSB0aW1pbmcgYW5kIGxpZmVjeWNsZSBkZXBlbmRlbmNpZXMuIFRoYXQncyBnb29kIHRvIGtlZXAgaW4gbWluZCwgYW5kIG1pZ2h0IGltcGFjdCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcmFjdGlvbnMgd2hlbiBkZWJ1Z2dpbmcgdGhpcyBhcmVhIGFnYWluIGluIHRoZSBmdXR1cmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSB0aGlua2luZyBvZiB0aGlzIGNvcnJlY3RseSB3aGVuIEkgZXhhbWluZSB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGUgbmV4dCB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA3NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjQ2LjMyMTU3MTQ1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3MjAyNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfdGFibGVzX3N1YnN5c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTUzOT1zdGF0aWMgYm9vbCBuZl90YWJsZXNfdmFsaWRfZ2VuaWQoc3RydWN0IG5ldCAqbmV0LCB1MzIgZ2VuaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU1NC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU1NTpzdGF0aWMgY29uc3Qgc3RydWN0IG5mbmV0bGlua19zdWJzeXN0ZW0gbmZfdGFibGVzX3N1YnN5cyA9IHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU1Ni1cXHQubmFtZVxcdFxcdD0gXFxcIm5mX3RhYmxlc1xcXCIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMjIzOT1zdGF0aWMgaW50IF9faW5pdCBuZl90YWJsZXNfbW9kdWxlX2luaXQodm9pZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMjc1LVxcdC8qIG11c3QgYmUgbGFzdCAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEyMjc2OlxcdGVyciA9IG5mbmV0bGlua19zdWJzeXNfcmVnaXN0ZXIoXFx1MDAyNm5mX3RhYmxlc19zdWJzeXMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMjc3LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTIyOTk9c3RhdGljIHZvaWQgX19leGl0IG5mX3RhYmxlc19tb2R1bGVfZXhpdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMzAwLXtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMjMwMTpcXHRuZm5ldGxpbmtfc3Vic3lzX3VucmVnaXN0ZXIoXFx1MDAyNm5mX3RhYmxlc19zdWJzeXMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMzAyLVxcdG5ldGxpbmtfdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bmZ0X25sX25vdGlmaWVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6NDYuMzgzMzEyNzVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAzNTM0Mjk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aXZlIFRob3VnaHQgUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBjbHVlIGxlYWRzIG1lIHRvIGBuZm5ldGxpbmtfc3Vic3lzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgYWxsIGNvbm5lY3RlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuIE15IHByaW1hcnkgdGFyZ2V0IGlzIHRvIHVuZGVyc3RhbmQgd2hlcmUgYGNvbW1pdGAgaXMgY2FsbGVkLiBUaGF0J3MgdGhlIGtleSB0byB0cmFjaW5nIHRoZSBsb2dpYyBmbG93IGhlcmUuIEknbGwgb3BlbiB1cCBgbmZuZXRsaW5rLmNgIGFuZCBzdGFydCBteSBzZWFyY2guIExldCdzIHNlZSB3aGF0IHRoZSBzb3VyY2UgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc1NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjQ5LjQxODY2MDEzNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3NjkzMjE1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJcXFxcLmNvbW1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDo0OS41NTYzNjQwNDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MDcxMjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBuZm5ldGxpbmtfc3Vic3lzIENvbW1pdCBDYWxsYmFjayoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIEknbSBmb2N1c2luZyBvbiB0aGUgYGNvbW1pdGAgY2FsbGJhY2sgd2l0aGluIHRoZSBgbmZuZXRsaW5rX3N1YnN5c2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjYWxsYmFjayBhbmQgaG93IGl0IGZ1bmN0aW9ucyB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb250ZXh0LiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGl0IGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIFRoaXMgYGNvbW1pdGAgZnVuY3Rpb24gaXMgbGlrZWx5IHRoZSBjcnVjaWFsIHBvaW50IHdoZXJlIGNoYW5nZXMgYXJlIGZpbmFsaXplZCwgb3IgcGVyaGFwcyB3aGVuIHRyYW5zYWN0aW9ucyBhcmUgY29tcGxldGVkLiBXaGF0IGFyZSB0aGUgc3BlY2lmaWMgb3BlcmF0aW9ucyB0aGF0IGFyZSB0aWVkIGludG8gdGhpcz8gV2hhdCB0eXBlcyBvZiBkYXRhIG9yIGV2ZW50cyB0cmlnZ2VyIHRoaXMgY2FsbGJhY2s/IFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyByZWxlYXNlZCBvciBjb21taXR0ZWQgd2l0aGluPyBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGl0cyBpbXBsZW1lbnRhdGlvbiB0byBkZXRlcm1pbmUgaXRzIGV4YWN0IGJlaGF2aW9yIHdpdGhpbiBOZXRmaWx0ZXIncyBicm9hZGVyIGZyYW1ld29yay4gSXMgaXQgaGFuZGxpbmcgbWVtb3J5IGFsbG9jYXRpb24/IElzIGl0IGNvb3JkaW5hdGluZyB3aXRoIG90aGVyIE5ldGZpbHRlciBjb21wb25lbnRzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5MzEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDo1My40MzcwODIwMjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0ODMzMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbW1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM9MzY5PXN0YXRpYyB2b2lkIG5mbmV0bGlua19yY3ZfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTQwOC1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jOjQwOTpcXHRpZiAoIXNzLVxcdTAwM2V2YWxpZF9nZW5pZCB8fCAhc3MtXFx1MDAzZWNvbW1pdCB8fCAhc3MtXFx1MDAzZWFib3J0KSB7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy00MTAtXFx0XFx0bmZubF91bmxvY2soc3Vic3lzX2lkKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNTczLVxcdH0gZWxzZSBpZiAoc3RhdHVzID09IE5GTkxfQkFUQ0hfRE9ORSkge1xcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM6NTc0OlxcdFxcdGVyciA9IHNzLVxcdTAwM2Vjb21taXQobmV0LCBvc2tiKTtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTU3NS1cXHRcXHRpZiAoZXJyID09IC1FQUdBSU4pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6NTMuNTMxOTIzMzE4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0OTEzNDQ1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgbmZfdGFibGVzIENvbW1pdC9BYm9ydCBMb2dpYyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGNhbGxzLCBgc3MtXHUwMDNlY29tbWl0KG5ldCwgb3NrYilgIGFuZCBgc3MtXHUwMDNlYWJvcnQobmV0LCBvc2tiLCBORk5MX0FCT1JUX05PTkUpYCBhcmUgZGVmaW5pdGVseSB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4gVGhhdCBtZWFucyBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBuZl90YWJsZXNfYWJvcnRgIGFyZSB0aGUgcmVsZXZhbnQgc3ltYm9scywgd2hpY2ggc2VlbXMgcmlnaHQsIGdpdmVuIHRoZSBjb250ZXh0LlxuXG5XYWl0IGEgc2Vjb25kLi4uIGFyZW4ndCB0aG9zZSBzdGF0aWM/IEhtbSwgYXJlIHRoZXkgaW5saW5lZD8gTm8sIHRoZXkncmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiBgbmZfdGFibGVzX3N1YnN5c2AsIHNvIHRoZXkgKmNhbid0KiBiZSBpbmxpbmVkLiBUaGF0IG1lYW5zIHRoZXkgd2lsbCBoYXZlIGRpc3RpbmN0LCBpZGVudGlmaWFibGUgc3ltYm9sIGFkZHJlc3Nlcywgd2hpY2ggaXMgZ3JlYXQgZm9yIG91ciBhbmFseXNpcy5cblxuTGV0J3MgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQuIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGlzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgd2l0aGluIGBuZl90YWJsZXNfY29tbWl0YC4gSXQgKm1pZ2h0KiBiZSBpbmxpbmVkLCBzbyBpdCdzIGxlc3Mgb2YgYSBmb2N1cy4gU2ltaWxhcmx5LCBgX19uZl90YWJsZXNfYWJvcnRgIGlzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgd2l0aGluIGBuZl90YWJsZXNfYWJvcnRgLiBBZ2FpbiwgcG9zc2libGUgaW5saW5pbmcuIFNvLCB5ZXMsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXJlIGRlZmluaXRlbHkgdGhlIGJlc3QgZm9jdXMgcG9pbnRzLlxuXG5Ob3csIGxldCdzIHpvb20gYmFjayBpbiBvbiB0aGUgcGF0Y2ggaXRzZWxmLiBPa2F5LCB0aGUgcGF0Y2gncyBjaGFuZ2VzIGFyZSBpbnNpZGUgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAsIGp1c3QgYXMgZXhwZWN0ZWQuIFRoZSBnb2FsIGhlcmUgaXMgdG8gY29ycmVjdGx5IG1hcmsgc2V0cyBhcyAnZGVhZCcgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHRoZXJlIGlzIGFsc28gYW4gdW51c2VkIGxpc3QgaGVhZCBiZWluZyByZW1vdmVkIGZyb20gdGhlIGFib3J0IHBhdGgsIGJhc2VkIG9uIHRoZSByZWFzb25pbmcgZ2l2ZW4uIFRoZSBlZmZlY3Qgb2YgdGhlIGNoYW5nZSBpcyB0byBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50IG9mIG5mX3RhYmxlcyBzZXRzIGR1cmluZyB0cmFuc2FjdGlvbiBjb21taXRzLlxuXG5BbHJpZ2h0LCB0aGF0J3Mgd2hhdCBJIG5lZWRlZC4gV2l0aCBgTkVURklMVEVSYCBhbmQgYE5GX1RBQkxFU2AgY29uZmlndXJlZCwgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCBhcmUgZGVmaW5pdGVseSB0aGUgcmlnaHQgc3ltYm9scyB0byBpbnNwZWN0IGZ1cnRoZXIuIExldCdzIG1ha2Ugc3VyZSB0aGUgbmFtaW5nIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzkxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIxOjAzLjAyMzI3MTAzM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxODM1ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlc19hYm9ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTI0MD1zdGF0aWMgdm9pZCBuZl90YWJsZXNfbW9kdWxlX2F1dG9sb2FkKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjU1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMjU2OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19hYm9ydF9yZWxlYXNlKHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjU3LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExMjk0PXN0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTMwNy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTMwODpzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEzMDkte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0OTktXFx0XFx0bmZ0X3RyYW5zX2xpc3RfZGVsKHRyYW5zKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTUwMDpcXHRcXHRuZl90YWJsZXNfYWJvcnRfcmVsZWFzZSh0cmFucyk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MDEtXFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MDUtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MDY6c3RhdGljIGludCBuZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTA3LVxcdFxcdFxcdCAgIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MTMtXFx0Z2Nfc2VxID0gbmZ0X2djX3NlcV9iZWdpbihuZnRfbmV0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTUxNDpcXHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MTUtXFx0bmZ0X2djX3NlcV9lbmQobmZ0X25ldCwgZ2Nfc2VxKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZuZXRsaW5rX3N1YnN5c3RlbSBuZl90YWJsZXNfc3Vic3lzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjAtXFx0LmNvbW1pdFxcdFxcdD0gbmZfdGFibGVzX2NvbW1pdCxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU2MTpcXHQuYWJvcnRcXHRcXHQ9IG5mX3RhYmxlc19hYm9ydCxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU2Mi1cXHQudmFsaWRfZ2VuaWRcXHQ9IG5mX3RhYmxlc192YWxpZF9nZW5pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjE6MDMuMTY1MTEyNjM4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3OTQ3MjAyODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbmZfdGFibGVzIFBhdGNoKipcblxuT2theSwgc28gYG5mX3RhYmxlc19hYm9ydGAgKmlzKiB0aGUga2V5IGZ1bmN0aW9uIHdlJ3JlIGxvb2tpbmcgYXQsIHRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBpbnN0aW5jdC4gTm93LCBsZXQncyBqdXN0IGRvIGEgcXVpY2sgY2hlY2sgdG8gbWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbGwgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGNvdmVyZWQuIGBORl9UQUJMRVNgIGlzIHRoZSBvYnZpb3VzIG9uZSwgaXQncyB0aGUgY29yZSBvZiB0aGlzLiBgTkVURklMVEVSYCBpcyBlc3NlbnRpYWwgYXMgd2VsbCwgb2YgY291cnNlLCB0aGUgdW5kZXJseWluZyBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBMZXQgbWUgc2VlLi4uIG9oLCBgTkVURklMVEVSX05FVExJTktgIGlzIGF1dG9tYXRpY2FsbHkgcHVsbGVkIGluIGJ5IGBORl9UQUJMRVNgLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIGl0LiBGaW5lLCBgTkZfVEFCTEVTYCBhbG9uZSB3b3VsZCBwcm9iYWJseSBzdWZmaWNlLCBidXQgaXQncyBnb29kIHByYWN0aWNlIHRvIGFsc28gaW5jbHVkZSBgTkVURklMVEVSYCBmb3IgZ29vZCBtZWFzdXJlLCBqdXN0IGluIGNhc2UuXG5cbkFscmlnaHQsIHRpbWUgdG8gcHJlcGFyZSB0aGUgb3V0cHV0LiBUaGUgZnV6emluZyBmbGFnLCBgV29ydGhGdXp6aW5nYCwgaXMgZGVmaW5pdGVseSB0cnVlIGhlcmUsIGFic29sdXRlbHkuIFRoZSByZWFzb25pbmcgaXMgc29saWQ6IFRoaXMgcGF0Y2gncyBwcmltYXJ5IGZ1bmN0aW9uIGlzIHRvIGNvcnJlY3QgaG93IHNldHMgYXJlIG1hcmtlZCBpbiB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBkZWxldGlvbi9kZXN0cnVjdGlvbiwgYW5kIGhvdyB0aGlzIGlzIGFwcGxpZWQgZHVyaW5nIHRyYW5zYWN0aW9ucy4gSXQgYWxzbyByZW1vdmVzIGEgdXNlbGVzcyBsaXN0IGhlYWQuIFRoaXMgY2hhbmdlcyB0aGUgd2F5IHRoYXQgbmZfdGFibGVzIHNldHMgYXJlIG1hbmFnZWQgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMuIEknbSBnb2luZyB0byBzZXQgYEZvY3VzU3ltYm9sc2AgdG8gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCBzaW5jZSB0aGUgY2hhbmdlcyBmb2N1cyBvbiB0aGVtLiBGaW5hbGx5LCBiYXNlZCBvbiBvdXIgaW52ZXN0aWdhdGlvbiwgdGhlIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYE5FVEZJTFRFUmAgYW5kIGBORl9UQUJMRVNgLiBUaGF0IHNlZW1zIGNvbXBsZXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE5MywiT3V0cHV0VG9rZW5zIjoxMDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjE6MDguOTU5ODM2MzE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4Njg5MTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIk5GX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX3RhYmxlc19jb21taXRcIixcbiAgICBcIm5mX3RhYmxlc19hYm9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBuZl90YWJsZXMgY29tbWl0IGFuZCBhYm9ydCBsb2dpYyB0byBwcm9wZXJseSBtYXJrIHNldHMgYXMgZGVhZCBkdXJpbmcgZGVsZXRpb24gYW5kIGRlc3RydWN0aW9uLCBhbmQgcmVtb3ZlcyBhbiB1bnVzZWQgbGlzdCBoZWFkIGluIHRoZSBhYm9ydCBwYXRoLiBUaGlzIGFsdGVycyB0aGUgc3RhdGUgbWFuYWdlbWVudCBvZiBuZl90YWJsZXMgc2V0cyBkdXJpbmcgdHJhbnNhY3Rpb24gY29tbWl0cyBhbmQgYWJvcnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfdGFibGVzX2NvbW1pdFwiLFxuICAgIFwibmZfdGFibGVzX2Fib3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbmV0ZmlsdGVyIG5mX3RhYmxlcyBjb21taXQgYW5kIGFib3J0IGxvZ2ljIHRvIHByb3Blcmx5IG1hcmsgc2V0cyBhcyBkZWFkIGR1cmluZyBkZWxldGlvbiBhbmQgZGVzdHJ1Y3Rpb24sIGFuZCByZW1vdmVzIGFuIHVudXNlZCBsaXN0IGhlYWQgaW4gdGhlIGFib3J0IHBhdGguIFRoaXMgYWx0ZXJzIHRoZSBzdGF0ZSBtYW5hZ2VtZW50IG9mIG5mX3RhYmxlcyBzZXRzIGR1cmluZyB0cmFuc2FjdGlvbiBjb21taXRzIGFuZCBhYm9ydHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIxOjA5LjA2ODUzMjk2NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NjA4NjE1NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMTowOS4wNjkwNjY4OTVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTU2NjAzMjEyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzIGBkZWFkYCBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgcGhhc2UgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgIG1lc3NhZ2VzLiBJdCBhbHNvIHJlbW92ZXMgYW4gdW51c2VkIGBzZXRfdXBkYXRlX2xpc3RgIHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIHN0YXRlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbG9naWMgYnVncyBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgYWNjZXNzZXMgdG8gc2V0cyB0aGF0IGFyZSBiZWluZyBkZWxldGVkLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLCBhbmQgbm8gZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGlzIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE4MWU1NjZjMmVkM2M0YmE2NWI1NDk3NzM1ODEzMjk2MjE5ZjI2ODJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMzoyMDowMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGMxMTJlY2M0ZmNhMzIuLjIxMTczMzNmNzVhY2YgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC0xMDg5NCw2ICsxMDg5NCwxMCBAQCBzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcbiBcdFx0bmZ0X2N0eF91cGRhdGUoY3R4LCB0cmFucyk7XG4gXG4gXHRcdHN3aXRjaCAodHJhbnMtXHUwMDNlbXNnX3R5cGUpIHtcbitcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVDpcbitcdFx0Y2FzZSBORlRfTVNHX0RFU1RST1lTRVQ6XG4rXHRcdFx0bmZ0X3RyYW5zX3NldCh0cmFucyktXHUwMDNlZGVhZCA9IDE7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuIFx0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAoIXRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0KVxuQEAgLTExMzA1LDcgKzExMzA5LDYgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxuIHtcbiBcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7XG4tXHRMSVNUX0hFQUQoc2V0X3VwZGF0ZV9saXN0KTtcbiBcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XG4gXHRzdHJ1Y3QgbmZ0X2N0eCBjdHggPSB7XG4gXHRcdC5uZXQgPSBuZXQsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMTowOS4wNjkwNjc4MjVaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3ODE4NjQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXRmaWx0ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgLiBSaWdodCBhd2F5LCBJIHNlZSBpdCdzIG1vZGlmeWluZyBgbmZ0X3NldF9jb21taXRfdXBkYXRlYC4gU3BlY2lmaWNhbGx5LCBpdCdzIGludHJvZHVjaW5nIHNvbWUgaGFuZGxpbmcgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhlIGtleSBsaW5lIHRoYXQganVtcHMgb3V0IGlzIGBuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMTtgLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGAtXHUwMDNlZGVhZCA9IDE7YC4gV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0IGRvZXMgdGhpcyBmbGFnIGRvPyBJcyB0aGlzIGFib3V0IG1hcmt0aW5nIHRoZSBgbmZ0X3NldGAgYXMgZGVhZCB3aGVuIGRlbGV0aW5nIG9yIGRlc3Ryb3lpbmcgaXQ/XG5cbkJ1dCBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgbmZ0X3RyYW5zX3NldCh0cmFucylgIGFjdHVhbGx5ICpyZXR1cm5zKi4gIElzIGl0IGEgYHN0cnVjdCBuZnRfc2V0ICpgLCBvciBzb21ldGhpbmcgcmVsYXRlZCB0byBpdD8gSSBzaG91bGQgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYG5mdF90cmFuc19zZXRgIHRvIGJlIGNlcnRhaW4uIENvbnRleHQgaXMga2V5IGhlcmU7IGl0IGRpY3RhdGVzIHRoZSBpbXBsaWNhdGlvbnMgb2YgYC1cdTAwM2VkZWFkID0gMTtgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjE6MTQuMjQ3MjU2OTc0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkyNDg2MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X3RyYW5zX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0yMjU9c3RhdGljIHZvaWQgX19uZnRfc2V0X3RyYW5zX2JpbmQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9zZXQgKnNldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTIzOC1cXHRcXHRjYXNlIE5GVF9NU0dfTkVXU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjIzOTpcXHRcXHRcXHRpZiAobmZ0X3RyYW5zX3NldCh0cmFucykgPT0gc2V0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjI0MDpcXHRcXHRcXHRcXHRuZnRfdHJhbnNfc2V0X2JvdW5kKHRyYW5zKSA9IGJpbmQ7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMjQxLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9NTY1PXN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTY4LVxcdHN0cnVjdCBuZnRfdHJhbnNfYmluZGluZyAqYmluZGluZztcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo1Njk6XFx0c3RydWN0IG5mdF90cmFuc19zZXQgKnRyYW5zX3NldDtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01NzAtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01ODAtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTgxOlxcdFxcdGlmICghbmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTgyOlxcdFxcdCAgICBuZnRfc2V0X2lzX2Fub255bW91cyhuZnRfdHJhbnNfc2V0KHRyYW5zKSkpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTgzLVxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmJpbmRpbmctXFx1MDAzZWJpbmRpbmdfbGlzdCwgXFx1MDAyNm5mdF9uZXQtXFx1MDAzZWJpbmRpbmdfbGlzdCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz03ODM9c3RhdGljIGludCBuZnRfZGVscnVsZV9ieV9jaGFpbihzdHJ1Y3QgbmZ0X2N0eCAqY3R4KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNzk4LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjc5OTpzdGF0aWMgaW50IF9fbmZ0X3RyYW5zX3NldF9hZGQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgaW50IG1zZ190eXBlLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwMC1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5mdF9zZXQgKnNldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwMi17XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODAzOlxcdHN0cnVjdCBuZnRfdHJhbnNfc2V0ICp0cmFuc19zZXQ7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODA0LVxcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwNS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MDY6XFx0dHJhbnMgPSBuZnRfdHJhbnNfYWxsb2MoY3R4LCBtc2dfdHlwZSwgc2l6ZW9mKHN0cnVjdCBuZnRfdHJhbnNfc2V0KSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODA3LVxcdGlmICh0cmFucyA9PSBOVUxMKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODE0LVxcdGlmIChtc2dfdHlwZSA9PSBORlRfTVNHX05FV1NFVCBcXHUwMDI2XFx1MDAyNiBjdHgtXFx1MDAzZW5sYVtORlRBX1NFVF9JRF0gXFx1MDAyNlxcdTAwMjYgIWRlc2MpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MTU6XFx0XFx0bmZ0X3RyYW5zX3NldF9pZCh0cmFucykgPVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgxNi1cXHRcXHRcXHRudG9obChubGFfZ2V0X2JlMzIoY3R4LVxcdTAwM2VubGFbTkZUQV9TRVRfSURdKSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MTgtXFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgxOTpcXHRuZnRfdHJhbnNfc2V0KHRyYW5zKSA9IHNldDtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MjAtXFx0aWYgKGRlc2MpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjE6XFx0XFx0bmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpID0gdHJ1ZTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjI6XFx0XFx0bmZ0X3RyYW5zX3NldF9nY19pbnQodHJhbnMpID0gZGVzYy1cXHUwMDNlZ2NfaW50O1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgyMzpcXHRcXHRuZnRfdHJhbnNfc2V0X3RpbWVvdXQodHJhbnMpID0gZGVzYy1cXHUwMDNldGltZW91dDtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjQ6XFx0XFx0bmZ0X3RyYW5zX3NldF9zaXplKHRyYW5zKSA9IGRlc2MtXFx1MDAzZXNpemU7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODI1LVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzMC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MzE6c3RhdGljIGludCBuZnRfdHJhbnNfc2V0X2FkZChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBpbnQgbXNnX3R5cGUsXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODMyLVxcdFxcdFxcdCAgICAgc3RydWN0IG5mdF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MzMte1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgzNDpcXHRyZXR1cm4gX19uZnRfdHJhbnNfc2V0X2FkZChjdHgsIG1zZ190eXBlLCBzZXQsIE5VTEwpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzNS19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz04OTU9c3RhdGljIGludCBuZnRfZGVsc2V0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfc2V0ICpzZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04OTgtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODk5OlxcdGVyciA9IG5mdF90cmFuc19zZXRfYWRkKGN0eCwgTkZUX01TR19ERUxTRVQsIHNldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtOTAwLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9NDgxMj1zdGF0aWMgc3RydWN0IG5mdF9zZXQgKm5mdF9zZXRfbG9va3VwX2J5aWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNDgxNy1cXHR1MzIgaWQgPSBudG9obChubGFfZ2V0X2JlMzIobmxhKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NDgxODpcXHRzdHJ1Y3QgbmZ0X3RyYW5zX3NldCAqdHJhbnM7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNDgxOS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTU0MzY9c3RhdGljIGludCBuZl90YWJsZXNfbmV3c2V0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01NjMyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjU2MzM6XFx0XFx0cmV0dXJuIF9fbmZ0X3RyYW5zX3NldF9hZGQoXFx1MDAyNmN0eCwgTkZUX01TR19ORVdTRVQsIHNldCwgXFx1MDAyNmRlc2MpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTU2MzQtXFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTcxNy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo1NzE4OlxcdGVyciA9IG5mdF90cmFuc19zZXRfYWRkKFxcdTAwMjZjdHgsIE5GVF9NU0dfTkVXU0VULCBzZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTU3MTktXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz02ODc0PXZvaWQgbmZ0X3NldF9lbGVtX2Rlc3Ryb3koY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTY4ODYtLyogRHJvcCByZWZlcmVuY2VzIGFuZCBkZXN0cm95LiBDYWxsZWQgZnJvbSBhYm9ydCBwYXRoLiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjY4ODc6c3RhdGljIHZvaWQgbmZ0X3RyYW5zX3NldF9lbGVtX2Rlc3Ryb3koY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZSlcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy02ODg4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwMjQwPXN0YXRpYyB2b2lkIG5mdF9jb21taXRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMjY3LVxcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMjY4OlxcdFxcdG5mdF9zZXRfZGVzdHJveShcXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAyNjktXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDg4Mz1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODk4LVxcdFxcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODk5OlxcdFxcdFxcdG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VkZWFkID0gMTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkwMC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTM3PXN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk2MS1cXHRcXHRjYXNlIE5GVF9NU0dfTkVXU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTYyOlxcdFxcdFxcdGlmICghbmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5NjM6XFx0XFx0XFx0ICAgIG5mdF9zZXRfaXNfYW5vbnltb3VzKG5mdF90cmFuc19zZXQodHJhbnMpKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTY0OlxcdFxcdFxcdCAgICAhbmZ0X3RyYW5zX3NldF9ib3VuZCh0cmFucykpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk2NS1cXHRcXHRcXHRcXHRwcl93YXJuX29uY2UoXFxcIm5mdGFibGVzIHJ1bGVzZXQgd2l0aCB1bmJvdW5kIHNldFxcXFxuXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyMC1cXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2bmZ0X3RyYW5zX2NvbnRhaW5lcl9zZXQodHJhbnMpLVxcdTAwM2VsaXN0X3RyYW5zX25ld3NldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjE6XFx0XFx0XFx0aWYgKG5mdF90cmFuc19zZXRfdXBkYXRlKHRyYW5zKSkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTIyOlxcdFxcdFxcdFxcdHN0cnVjdCBuZnRfc2V0ICpzZXQgPSBuZnRfdHJhbnNfc2V0KHRyYW5zKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyMy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEyNDpcXHRcXHRcXHRcXHRXUklURV9PTkNFKHNldC1cXHUwMDNldGltZW91dCwgbmZ0X3RyYW5zX3NldF90aW1lb3V0KHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjU6XFx0XFx0XFx0XFx0V1JJVEVfT05DRShzZXQtXFx1MDAzZWdjX2ludCwgbmZ0X3RyYW5zX3NldF9nY19pbnQodHJhbnMpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyNi1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEyNzpcXHRcXHRcXHRcXHRpZiAobmZ0X3RyYW5zX3NldF9zaXplKHRyYW5zKSlcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEyODpcXHRcXHRcXHRcXHRcXHRXUklURV9PTkNFKHNldC1cXHUwMDNlc2l6ZSwgbmZ0X3RyYW5zX3NldF9zaXplKHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMjktXFx0XFx0XFx0fSBlbHNlIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzMDpcXHRcXHRcXHRcXHRuZnRfY2xlYXIobmV0LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMzEtXFx0XFx0XFx0XFx0LyogVGhpcyBhdm9pZHMgaGl0dGluZyAtRUJVU1kgd2hlbiBkZWxldGluZyB0aGUgdGFibGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTMzLVxcdFxcdFxcdFxcdCAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTM0OlxcdFxcdFxcdFxcdGlmIChuZnRfc2V0X2lzX2Fub255bW91cyhuZnRfdHJhbnNfc2V0KHRyYW5zKSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzNTpcXHRcXHRcXHRcXHQgICAgIWxpc3RfZW1wdHkoXFx1MDAyNm5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2ViaW5kaW5ncykpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMzYtXFx0XFx0XFx0XFx0XFx0bmZ0X3VzZV9kZWMoXFx1MDAyNnRhYmxlLVxcdTAwM2V1c2UpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTM3LVxcdFxcdFxcdH1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzODpcXHRcXHRcXHRuZl90YWJsZXNfc2V0X25vdGlmeShcXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEzOS1cXHRcXHRcXHRcXHRcXHQgICAgIE5GVF9NU0dfTkVXU0VULCBHRlBfS0VSTkVMKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTQzLVxcdFxcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTQ0OlxcdFxcdFxcdG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VkZWFkID0gMTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTE0NTpcXHRcXHRcXHRsaXN0X2RlbF9yY3UoXFx1MDAyNm5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTE0NjpcXHRcXHRcXHRuZl90YWJsZXNfc2V0X25vdGlmeShcXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTE0Ny1cXHRcXHRcXHRcXHRcXHQgICAgIHRyYW5zLVxcdTAwM2Vtc2dfdHlwZSwgR0ZQX0tFUk5FTCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTI1Nj1zdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjc1LVxcdGNhc2UgTkZUX01TR19ORVdTRVQ6XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEyNzY6XFx0XFx0bmZ0X3NldF9kZXN0cm95KFxcdTAwMjZjdHgsIG5mdF90cmFuc19zZXQodHJhbnMpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI3Ny1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI3OC1cXHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTI3OTpcXHRcXHRuZnRfdHJhbnNfc2V0X2VsZW1fZGVzdHJveShcXHUwMDI2Y3R4LCBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI4MC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExMzA4PXN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDA5LVxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZuZnRfdHJhbnNfY29udGFpbmVyX3NldCh0cmFucyktXFx1MDAzZWxpc3RfdHJhbnNfbmV3c2V0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQxMDpcXHRcXHRcXHRpZiAobmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpKSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTEtXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTQtXFx0XFx0XFx0bmZ0X3VzZV9kZWNfcmVzdG9yZShcXHUwMDI2dGFibGUtXFx1MDAzZXVzZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0MTU6XFx0XFx0XFx0aWYgKG5mdF90cmFuc19zZXRfYm91bmQodHJhbnMpKSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTYtXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTgtXFx0XFx0XFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDE5OlxcdFxcdFxcdG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VkZWFkID0gMTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQyMDpcXHRcXHRcXHRsaXN0X2RlbF9yY3UoXFx1MDAyNm5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQyMS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDI0LVxcdFxcdFxcdG5mdF91c2VfaW5jX3Jlc3RvcmUoXFx1MDAyNnRhYmxlLVxcdTAwM2V1c2UpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDI1OlxcdFxcdFxcdG5mdF9jbGVhcih0cmFucy1cXHUwMDNlbmV0LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0MjY6XFx0XFx0XFx0aWYgKG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VmbGFncyBcXHUwMDI2IChORlRfU0VUX01BUCB8IE5GVF9TRVRfT0JKRUNUKSlcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQyNzpcXHRcXHRcXHRcXHRuZnRfbWFwX2FjdGl2YXRlKFxcdTAwMjZjdHgsIG5mdF90cmFuc19zZXQodHJhbnMpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQyOC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEyMjM5PXN0YXRpYyBpbnQgX19pbml0IG5mX3RhYmxlc19tb2R1bGVfaW5pdCh2b2lkKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIyNDUtXFx0QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBuZnRfdHJhbnNfcnVsZSwgbmZ0X3RyYW5zKSAhPSAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMjI0NjpcXHRCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IG5mdF90cmFuc19zZXQsIG5mdF90cmFuc19iaW5kaW5nLm5mdF90cmFucykgIT0gMCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIyNDctXFx0QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBuZnRfdHJhbnNfZWxlbSwgbmZ0X3RyYW5zKSAhPSAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjE6MTQuMzU2NTEwODhaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzNzI4NDg2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIFRhYmxlcyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAuIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuSW4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIHRoZSBrZXkgY2hhbmdlIGlzIGFkZGluZyBoYW5kbGluZyBmb3IgYE5GVF9NU0dfREVMU0VUYCBhbmQgYE5GVF9NU0dfREVTVFJPWVNFVGAuICBUaGUgY3JpdGljYWwgbGluZSBpcyBgbmZ0X3RyYW5zX3NldCh0cmFucyktXHUwMDNlZGVhZCA9IDE7YC4gIEFoLCByaWdodCwgc28gaXQncyBzZXR0aW5nIGEgYGRlYWRgIGZsYWcgb24gdGhlIGBzdHJ1Y3QgbmZ0X3NldGAuIFRoaXMgaXMgY2xhc3NpYyBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFRoaXMgYGRlYWRgIGZsYWcgaXMgdmVyeSBsaWtlbHkgYSBzdGF0ZSBmbGFnLCBwcm9iYWJseSBhaW1lZCBhdCBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIG9yIGEgZG91YmxlLWZyZWUsIG9yIHNvbWUgb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgcmVsYXRlZCB0byBhY2Nlc3NpbmcgYSBzZXQgdGhhdCdzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlbGV0ZWQuIE1ha2VzIHNlbnNlLiBUaGlzIGlzIGdvb2QsIHByb2FjdGl2ZSBjb2RpbmcuXG5cblRoZSBvdGhlciBjaGFuZ2UgaXMgcmVtb3ZpbmcgYExJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpYCBpbiBgX19uZl90YWJsZXNfYWJvcnRgLiBMb29rcyBsaWtlIGEgZGVhZCB2YXJpYWJsZTsgY2xlYW51cC4gTm8gYmlnIGRlYWwuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8uICBUaGlzIHBhdGNoICpzZXRzKiBhIGBkZWFkYCBmbGFnLiBJdCBkb2Vzbid0IGFsbG9jYXRlIG5ldyBtZW1vcnkgb3IgcmVhZCBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCdzIGp1c3QgbW9kaWZ5aW5nIHRoZSBleGlzdGluZyBzdGF0ZSBvZiBhIGBuZnRfc2V0YC4gVGhpcyBpcyBhICpmaXgqLCBub3QgYSBzb3VyY2Ugb2YgYSBwb3RlbnRpYWwgbmV3IHZ1bG5lcmFiaWxpdHkuIEl0J3MgZml4aW5nIGEgbG9naWMgYnVnLCBhIFVBRiBvciByYWNlIGNvbmRpdGlvbiwgd2hlcmUgYSBzZXQgY291bGQgaGF2ZSBiZWVuIGFjY2Vzc2VkIGFmdGVyIGJlaW5nIGRlbGV0ZWQuXG5cbkFscmlnaHQsIGxldCdzIGNvbnNpZGVyIEtNU0FOIHNwZWNpZmljYWxseS4gIEtNU0FOIGlzIGFsbCBhYm91dCBkZXRlY3RpbmcgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuICBCdXQgdGhpcyBwYXRjaCBkb2Vzbid0IGRvIHRoYXQuIEl0IGp1c3QgKnNldHMqIHRoZSBgZGVhZGAgZmxhZy4gIE5vIG5ldyBtZW1vcnkgaXMgYWxsb2NhdGVkLCBhbmQgbm8gbWVtb3J5IGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBJdCdzIGp1c3QgYSBzdGF0ZSB0cmFuc2l0aW9uLCBhIGZsYWcgbW9kaWZpY2F0aW9uLiAgVGhpcyBpc24ndCBLTVNBTiB0ZXJyaXRvcnkuIFN0YW5kYXJkIEtBU0FOLCBmb3IgZGV0ZWN0aW5nIGFueSBVQUYsIGV0Yy4sIGlzIHN1ZmZpY2llbnQgaGVyZS4gVGhpcyBpcyBhIHN0YW5kYXJkIHN0YXRlIG1hbmFnZW1lbnQgZml4LlxuXG5TbywgdGhlIHN1bW1hcnkgaXMgdGhpczogVGhlIHBhdGNoIGVuaGFuY2VzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzICdkZWFkJyBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgZm9yIGRlbGV0aW9uIChgTkZUX01TR19ERUxTRVRgLCBgTkZUX01TR19ERVNUUk9ZU0VUYCkuIEl0IGFsc28gY2xlYW5zIHVwIGEgcmVkdW5kYW50IHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGJvbHN0ZXIgc3RhdGUgbWFuYWdlbWVudCBhbmQgZ3VhcmQgYWdhaW5zdCBsb2dpYyBlcnJvcnMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3Mgb3IgdW5hdXRob3JpemVkIGFjY2VzcyB0byBzZXRzIHNsYXRlZCBmb3IgZGVsZXRpb24uIFRoZXJlIGFyZSBubyBhbGxvY2F0aW9ucywgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaW50cm9kdWNlZCwgYW5kIG5vIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpc24ndCBhIGNhbmRpZGF0ZSBmb3IgS01TQU4gYW5hbHlzaXMuICBTdGFuZGFyZCBLQVNBTiB3aWxsIGJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IGFueSBtZW1vcnkgY29ycnVwdGlvbiByaXNrcyByZWxhdGVkIHRvIHRoaXMgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NzQsIk91dHB1dFRva2VucyI6MTc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIxOjI0LjcyOTM2MzcyN1oiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGZpbHRlciB0YWJsZXMgQVBJIHRvIG1hcmsgYSBzZXQgYXMgYGRlYWRgIGR1cmluZyB0aGUgY29tbWl0IHVwZGF0ZSBwaGFzZSBmb3IgYE5GVF9NU0dfREVMU0VUYCBhbmQgYE5GVF9NU0dfREVTVFJPWVNFVGAgbWVzc2FnZXMuIEl0IGFsc28gcmVtb3ZlcyBhbiB1bnVzZWQgYHNldF91cGRhdGVfbGlzdGAgdmFyaWFibGUuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gc3RhdGUgbWFuYWdlbWVudCBhbmQgcHJldmVudGluZyBsb2dpYyBidWdzIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBhY2Nlc3NlcyB0byBzZXRzIHRoYXQgYXJlIGJlaW5nIGRlbGV0ZWQuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQsIGFuZCBubyBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgS0FTQU4gaXMgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGZpbHRlciB0YWJsZXMgQVBJIHRvIG1hcmsgYSBzZXQgYXMgYGRlYWRgIGR1cmluZyB0aGUgY29tbWl0IHVwZGF0ZSBwaGFzZSBmb3IgYE5GVF9NU0dfREVMU0VUYCBhbmQgYE5GVF9NU0dfREVTVFJPWVNFVGAgbWVzc2FnZXMuIEl0IGFsc28gcmVtb3ZlcyBhbiB1bnVzZWQgYHNldF91cGRhdGVfbGlzdGAgdmFyaWFibGUuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gc3RhdGUgbWFuYWdlbWVudCBhbmQgcHJldmVudGluZyBsb2dpYyBidWdzIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBhY2Nlc3NlcyB0byBzZXRzIHRoYXQgYXJlIGJlaW5nIGRlbGV0ZWQuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQsIGFuZCBubyBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgS0FTQU4gaXMgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 13:17:18 +0000 UTC FinishedAt: 2026-08-21 13:21:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "e625a9477d12baaff4025c5f9989184a907ea8fc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER", "NF_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git", "commit_hash": "e625a9477d12baaff4025c5f9989184a907ea8fc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETFILTER", "NF_TABLES" ], "series_id": "1834f170-c445-44cb-a08b-53cce57e6744" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_tables_commit", "nf_tables_abort" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19hYm9ydCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzIGBkZWFkYCBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgcGhhc2UgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgIG1lc3NhZ2VzLiBJdCBhbHNvIHJlbW92ZXMgYW4gdW51c2VkIGBzZXRfdXBkYXRlX2xpc3RgIHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIHN0YXRlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbG9naWMgYnVncyBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgYWNjZXNzZXMgdG8gc2V0cyB0aGF0IGFyZSBiZWluZyBkZWxldGVkLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLCBhbmQgbm8gZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGlzIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgbmZfdGFibGVzIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgdG8gcHJvcGVybHkgbWFyayBzZXRzIGFzIGRlYWQgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHJlbW92ZXMgYW4gdW51c2VkIGxpc3QgaGVhZCBpbiB0aGUgYWJvcnQgcGF0aC4gVGhpcyBhbHRlcnMgdGhlIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIGFib3J0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE4MWU1NjZjMmVkM2M0YmE2NWI1NDk3NzM1ODEzMjk2MjE5ZjI2ODJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMzoyMDowMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5pbmRleCBjMTEyZWNjNGZjYTMyLi4yMTE3MzMzZjc1YWNmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5AQCAtMTA4OTQsNiAmIzQzOzEwODk0LDEwIEBAIHN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuIFx0XHRuZnRfY3R4X3VwZGF0ZShjdHgsIHRyYW5zKTtcbiBcbiBcdFx0c3dpdGNoICh0cmFucy1cdTAwM2Vtc2dfdHlwZSkge1xuJiM0MztcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVDpcbiYjNDM7XHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxuJiM0MztcdFx0XHRuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuIFx0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAoIXRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0KVxuQEAgLTExMzA1LDcgJiM0MzsxMTMwOSw2IEBAIHN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbiB7XG4gXHRzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0ID0gbmZ0X3Blcm5ldChuZXQpO1xuIFx0c3RydWN0IG5mdF90cmFucyAqdHJhbnMsICpuZXh0O1xuLVx0TElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0gKnRlO1xuIFx0c3RydWN0IG5mdF9jdHggY3R4ID0ge1xuIFx0XHQubmV0ID0gbmV0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfdGFibGVzX2NvbW1pdCYjMzQ7LAogICAgJiMzNDtuZl90YWJsZXNfYWJvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbmV0ZmlsdGVyIG5mX3RhYmxlcyBjb21taXQgYW5kIGFib3J0IGxvZ2ljIHRvIHByb3Blcmx5IG1hcmsgc2V0cyBhcyBkZWFkIGR1cmluZyBkZWxldGlvbiBhbmQgZGVzdHJ1Y3Rpb24sIGFuZCByZW1vdmVzIGFuIHVudXNlZCBsaXN0IGhlYWQgaW4gdGhlIGFib3J0IHBhdGguIFRoaXMgYWx0ZXJzIHRoZSBzdGF0ZSBtYW5hZ2VtZW50IG9mIG5mX3RhYmxlcyBzZXRzIGR1cmluZyB0cmFuc2FjdGlvbiBjb21taXRzIGFuZCBhYm9ydHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhODFlNTY2YzJlZDNjNGJhNjViNTQ5NzczNTgxMzI5NjIxOWYyNjgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTM6MjA6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCmluZGV4IGMxMTJlY2M0ZmNhMzIuLjIxMTczMzNmNzVhY2YgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCkBAIC0xMDg5NCw2ICYjNDM7MTA4OTQsMTAgQEAgc3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsCiAJCW5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpOwogCiAJCXN3aXRjaCAodHJhbnMtJmd0O21zZ190eXBlKSB7CiYjNDM7CQljYXNlIE5GVF9NU0dfREVMU0VUOgomIzQzOwkJY2FzZSBORlRfTVNHX0RFU1RST1lTRVQ6CiYjNDM7CQkJbmZ0X3RyYW5zX3NldCh0cmFucyktJmd0O2RlYWQgPSAxOwomIzQzOwkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfREVMU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAkJCWlmICghdGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQpCkBAIC0xMTMwNSw3ICYjNDM7MTEzMDksNiBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pCiB7CiAJc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCA9IG5mdF9wZXJuZXQobmV0KTsKIAlzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7Ci0JTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7CiAJc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTsKIAlzdHJ1Y3QgbmZ0X2N0eCBjdHggPSB7CiAJCS5uZXQgPSBuZXQsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgVGFibGVzIEFQSSBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBoaXR0aW5nIGBuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgaW4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIHNvbWUgbG9naWMgdGhlcmUgdG8gaGFuZGxlIHRoZSBkZWxldGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2Ygc2V0cy4gTGV0IG1lIHNlZS4uLiB5ZXMsIGl0JiMzOTtzIHNldHRpbmcgYG5mdF90cmFuc19zZXQodHJhbnMpLSZndDtkZWFkID0gMWAgd2hlbiBpdCBlbmNvdW50ZXJzIGBORlRfTVNHX0RFTFNFVGAgb3IgYE5GVF9NU0dfREVTVFJPWVNFVGAuIFRoYXQgbWFrZXMgc2Vuc2UuIE1hcmtpbmcgdGhlIHNldCBhcyAmIzM0O2RlYWQmIzM0OyBwcm9iYWJseSBoZWxwcyB3aXRoIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBwcmV2ZW50cyBmdXR1cmUgb3BlcmF0aW9ucyBvbiBpdCwgZWZmZWN0aXZlbHkgc2lnbmFsaW5nIGl0cyBkZW1pc2Ugd2l0aGluIHRoZSB0cmFuc2FjdGlvbi4gSSB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYW55IGZvbGxvdy11cCBnYXJiYWdlIGNvbGxlY3Rpb24gb3IgY2xlYW51cCBsb2dpYyBsaW5rZWQgdG8gdGhhdCBmbGFnLCBvciBwZXJoYXBzIGRlZmVycmVkIGNsZWFudXAuCgpBbmQgdGhlbiwgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyByZW1vdmluZyBgTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7YCBmcm9tIGBfX25mX3RhYmxlc19hYm9ydGAuIEhtbSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoYXQgd2FzIHByZXNlbnQgaW4gdGhlIGZpcnN0IHBsYWNlIGFuZCB3aHkgaXQmIzM5O3MgYmVpbmcgcmVtb3ZlZC4gSXMgdGhpcyBzb21lIGtpbmQgb2YgcmVmYWN0b3Jpbmcgb3Igc2ltcGxpZmljYXRpb24/IE1heWJlIHRoZSBsaXN0IHdhc24mIzM5O3QgbmVlZGVkIGFueW1vcmUsIG9yIHRoZSBmdW5jdGlvbmFsaXR5IGl0IHByb3ZpZGVkIGhhcyBiZWVuIG1vdmVkIGVsc2V3aGVyZSwgcGVyaGFwcyB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIG9yIGltcHJvdmUgZWZmaWNpZW5jeS4gSSBzaG91bGQgZGlnIGRlZXBlciBpbnRvIHRoYXQgYF9fbmZfdGFibGVzX2Fib3J0YCBmdW5jdGlvbi4gSSB3aWxsIGNoZWNrIHRoZSBjb250ZXh0IG9mIGJvdGggYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMsIGFuZCBjb25maXJtIHdoZXRoZXIgdGhlIHJlbW92YWwgaXMgc2FmZSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X3NldF9jb21taXRfdXBkYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA4Njg9c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg4Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODgzOnN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4ODQtXHRcdFx0XHQgIHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA5Mzc9c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxNy1cdC8qIHN0ZXAgMi4gIE1ha2UgcnVsZXNfZ2VuX1ggdmlzaWJsZSB0byBwYWNrZXQgcGF0aCAqL1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEwMTg6XHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXHUwMDI2Y3R4LCBuZnRfbmV0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgemVyb2luZyBpbiBvbiBhIGNyaXRpY2FsIHNlY3Rpb24gd2l0aGluIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGludHJvZHVjaW5nIGEgY29uZGl0aW9uIHdoZXJlIGBuZnRfdHJhbnNfc2V0KHRyYW5zKS0mZ3Q7ZGVhZCA9IDE7YCBnZXRzIHNldCB3aGVuIGB0cmFucy0mZ3Q7bXNnX3R5cGVgIGlzIGVpdGhlciBgTkZUX01TR19ERUxTRVRgIG9yIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGRpcmVjdCBhbHRlcmF0aW9uIG9mIGhvdyBuZXRmaWx0ZXImIzM5O3MgYG5mX3RhYmxlc2AgaGFuZGxlcyBzZXQgZGVsZXRpb24gYW5kIGRlc3RydWN0aW9uLiAgTXkgc3BpZGV5IHNlbnNlIGlzIHRpbmdsaW5nOyB0aGlzIHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldC4mIzM0OyBXZSBuZWVkIHRvIHJlYWxseSBoYW1tZXIgdGhpcyB3aXRoIGEgZnV6emluZyBjYW1wYWlnbi4gVGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIHJhY2UgY29uZGl0aW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGNoYW5nZXMgZHVyaW5nIHRob3NlIHNwZWNpZmljIHNldCBvcGVyYXRpb25zIGlzIGRlZmluaXRlbHkgdGhlcmUuCgpCZWZvcmUgd2Ugc3RhcnQgZnV6emluZywgbGV0JiMzOTtzIHRha2UgYSBtaW51dGUgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHByZXJlcXVpc2l0ZXMuIFdlIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHdlJiMzOTtyZSB3b3JraW5nIHdpdGggYSBzeXN0ZW0gcHJvcGVybHkgc2V0IHVwIHRvIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLiBJIG5lZWQgdG8ga25vdyBwcmVjaXNlbHkgd2hpY2gga2VybmVsIGNvbmZpZ3MgYXJlIG5lY2Vzc2FyeSB0byBlbmFibGUgYWxsIHRoZSByZWxldmFudCBmZWF0dXJlcyBvZiBgbmZfdGFibGVzYCB0aGF0IGFyZSB0aWVkIGludG8gdGhpcyBsb2dpYy4gR290dGEgZW5zdXJlIHdlJiMzOTtyZSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24sIG9yIHdlJiMzOTtyZSB3YXN0aW5nIHZhbHVhYmxlIGZ1enppbmcgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfVEFCTEVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDU1OmNvbmZpZyBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzMtXHRkZXBlbmRzIG9uIElQVjZcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDc5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTIxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHNvIHRoZSBjbHVlIGlzIGBORl9UQUJMRVNgLiBUaGF0JiMzOTtzIHRoZSBjb25maWcgaXRlbSB3ZSYjMzk7cmUgZm9jdXNpbmcgb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgKm90aGVyKiBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucyBsdXJraW5nIGFyb3VuZC4gVGhlcmUmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBtb3JlIHRvIHRoZSBzdG9yeSB0aGFuIGp1c3QgdGhpcyBzaW5nbGUgc2V0dGluZy4gSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgdmlldyBiZWZvcmUgSSBzdGFydCB0byBtYWtlIGFzc3VtcHRpb25zIGFib3V0IGhvdyBgTkZfVEFCTEVTYCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBXZSBuZWVkIHRoZSBsYXkgb2YgdGhlIGxhbmQsIGFzIHRoaXMgbWlnaHQgYmUgdGhlIG9ubHkgY29uZmlnIGZpbGUgb2YgaXRzIGtpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX1RBQkxFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL25ldGZpbHRlci9LY29uZmlnLTUtI1xubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZfVEFCTEVTX0JSSURHRVxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZy03LVx0ZGVwZW5kcyBvbiBCUklER0UgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUiBcdTAwMjZcdTAwMjYgTkZfVEFCTEVTXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MzM9aWYgTkZfVEFCTEVTXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjM1OmNvbmZpZyBORl9UQUJMRVNfSVBWNFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMzYtXHRib29sIFwmIzM0O0lQdjQgbmZfdGFibGVzIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz02Mj1lbmRpZiAjIE5GX1RBQkxFU19JUFY0XG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy02My1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjY0OmNvbmZpZyBORl9UQUJMRVNfQVJQXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7QVJQIG5mX3RhYmxlcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Mjk9aWYgTkZfVEFCTEVTXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0zMC1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjMxOmNvbmZpZyBORl9UQUJMRVNfSVBWNlxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjYgbmZfdGFibGVzIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDUzPWVuZGlmICMgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU2LVx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTQ3MT1pZiBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVx0ZGVwZW5kcyBvbiBJUFY2XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0ODA6Y29uZmlnIE5GX1RBQkxFU19ORVRERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXHRib29sIFwmIzM0O05ldGZpbHRlciBuZl90YWJsZXMgbmV0ZGV2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIxNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbmZfdGFibGVzIENvbW1pdCBVcGRhdGUgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBhbmQgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gVGhpcyBpcyBwYXJ0IG9mIHRoZSBgTkZfVEFCTEVTYCBjb25maWd1cmF0aW9uLCBzbyB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUgYSBiaXQuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCBhbmQsIG9mIGNvdXJzZSwgdGhlIGZ1bmN0aW9uIGl0IGNhbGxzLCBgX19uZl90YWJsZXNfYWJvcnRgLiBCdXQgd2FpdC4uLiB0aGlzIGlzIHN0YXRpYy4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBjYWxscywgc28gSSBuZWVkIHRvIHNlZSBpZiBpdCYjMzk7cyBpbmxpbmVkLiBMZXQgbWUgY2hlY2sgdGhlIGRpc2Fzc2VtYmx5IHRvIHNlZSBpZiB0aGUgc3RhdGljIGtleXdvcmQgaXMgYWN0dWFsbHkgaW4gdGhlIGNvbXBpbGVkIG91dHB1dCwgb3IgaWYgaXQgaGFzIGJlZW4gb3B0aW1pemVkIGF3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9zZXRfY29tbWl0X3VwZGF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwODY4PXN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKHN0cnVjdCBsaXN0X2hlYWQgKmFkbCwgdTMyIGdlbmVyYXRpb24pXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4ODItXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDg4MzpzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODg0LVx0XHRcdFx0ICBzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTM3PXN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMTctXHQvKiBzdGVwIDIuICBNYWtlIHJ1bGVzX2dlbl9YIHZpc2libGUgdG8gcGFja2V0IHBhdGggKi9cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDE4Olx0bmZ0X3NldF9jb21taXRfdXBkYXRlKFx1MDAyNmN0eCwgbmZ0X25ldCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc4OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBpbnRlcm5hbHMgYW5kIG5ldGZpbHRlcjoKCioqSW5saW5pbmcgYW5kIFN0YXRpYyBTY29wZSBpbiBuZl90YWJsZXNfY29tbWl0KioKCkhtbSwgdGhpcyBgbmZfdGFibGVzX2NvbW1pdGAgZnVuY3Rpb24uLi4gSXQgc2VlbXMgc3RhdGljIGFuZCwgZnJvbSB3aGF0IEkgY2FuIHNlZSwgaXMgb25seSBldmVyIGNhbGxlZCBvbmNlLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZl90YWJsZXNfY29tbWl0YCBpdHNlbGYuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgdG8gbWUgdGhhdCBpdCYjMzk7cyBwcmltZSByZWFsIGVzdGF0ZSBmb3IgaW5saW5pbmcuIFRoZSBjb21waWxlciBpcyBwcm9iYWJseSBvcHRpbWl6aW5nIGl0IHRoYXQgd2F5IHRvIGF2b2lkIHRoZSBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIGl0cyBsaW1pdGVkIHNjb3BlLgoKU2luY2UgYG5mX3RhYmxlc19jb21taXRgIGl0c2VsZiBpcyBhbHNvIHN0YXRpYywgSSYjMzk7bSBnZXR0aW5nIGN1cmlvdXMgYWJvdXQgdGhlIGNhbGwgY2hhaW4gYW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gTGV0IG1lIHF1aWNrbHkgdHJhY2Ugd2hlcmUgKml0KiBpcyBjYWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhIGJpdCBiZXR0ZXIuIFRoaXMgY291bGQgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgZGV0YWlscyBhYm91dCBob3cgbmV0ZmlsdGVyIHRhYmxlcyBhcmUgYWN0dWFsbHkgY29tbWl0dGVkIGFuZCBhcHBsaWVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDMxOD1FWFBPUlRfU1lNQk9MX0dQTChuZl90YWJsZXNfdHJhbnNfZGVzdHJveV9mbHVzaF93b3JrKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzE5LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzMjA6c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMzIxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDM5NC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMzk1OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfY2hhaW5fcHJlcGFyZV9jYW5jZWwoc3RydWN0IG5ldCAqbmV0KVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzOTYte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDEwLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTE6c3RhdGljIHZvaWQgX19uZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXMoc3RydWN0IHJjdV9oZWFkICpoKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTIte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDE3LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTg6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChzdHJ1Y3QgbmZ0X3J1bGVfYmxvYiAqYmxvYilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDE5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyNS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDI2Olx0Y2FsbF9yY3UoXHUwMDI2bGFzdC1cdTAwM2VoLCBfX25mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlcyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyNy19XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyOC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDI5OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfY2hhaW4oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDMwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ1MS1cdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoY2hhaW4tXHUwMDNlYmxvYl9nZW5fMSwgZzApO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NTI6XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ1My1cdFx0fSBlbHNlIHtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDU0LVx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihjaGFpbi1cdTAwM2VibG9iX2dlbl8wLCBnMSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ1NTpcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXNfb2xkKGcwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDU2LVx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NzEtXHRpZiAobmV4dF9nZW5iaXQpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ3MjpcdFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ3My1cdGVsc2Vcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDc0Olx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXNfb2xkKGcwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDc1LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDcyND1zdGF0aWMgdm9pZCBuZl90YWJsZXNfbW9kdWxlX2F1dG9sb2FkX2NsZWFudXAoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzM2LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA3Mzc6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9yZWxlYXNlKHN0cnVjdCBuZXQgKm5ldClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzM4LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDc3MT1zdGF0aWMgdm9pZCBuZnRfY29tbWl0X25vdGlmeShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBwb3J0aWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MDYtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgwNzpzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXRfYXVkaXRfYWxsb2Moc3RydWN0IGxpc3RfaGVhZCAqYWRsLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MDgtXHRcdFx0XHRcdHN0cnVjdCBuZnRfdGFibGUgKnRhYmxlKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODIzLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4MjQ6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKHN0cnVjdCBsaXN0X2hlYWQgKmFkbClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODI1LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgzNi0gKi9cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODM3OnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9lbnRyeWNvdW50KGNvbnN0IHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4Mzgte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODQ3LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4NDg6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9jb2xsZWN0KHN0cnVjdCBsaXN0X2hlYWQgKmFkbCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODQ5LVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgdTMyIG9wKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODYwLWZvdW5kOlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4NjE6XHRhZHAtXHUwMDNlZW50cmllcyAmIzQzOz0gbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9lbnRyeWNvdW50KHRyYW5zKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODYyLVx0aWYgKCFhZHAtXHUwMDNlb3AgfHwgYWRwLVx1MDAzZW9wIFx1MDAzZSBvcClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg2Ny1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODY4OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKHN0cnVjdCBsaXN0X2hlYWQgKmFkbCwgdTMyIGdlbmVyYXRpb24pXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg2OS17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA5MzI9c3RhdGljIHZvaWQgbmZ0X2djX3NlcV9lbmQoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCwgdW5zaWduZWQgaW50IGdjX3NlcSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkzNi1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTM3OnN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkzOC17XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5OTctXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDk5ODpcdFx0cmV0ID0gbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9hbGxvYyhcdTAwMjZhZGwsIHRhYmxlKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTk5LVx0XHRpZiAocmV0KSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwMDpcdFx0XHRuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKG5ldCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwMTpcdFx0XHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2ZyZWUoXHUwMDI2YWRsKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDAyLVx0XHRcdHJldHVybiByZXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMDctXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwODpcdFx0XHRyZXQgPSBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmUobmV0LCBjaGFpbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAwOS1cdFx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAxMDpcdFx0XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fcHJlcGFyZV9jYW5jZWwobmV0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDExOlx0XHRcdFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKFx1MDAyNmFkbCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxMi1cdFx0XHRcdHJldHVybiByZXQ7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMjEtXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoY2hhaW4sIFx1MDAyNnRhYmxlLVx1MDAzZWNoYWlucywgbGlzdClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDIyOlx0XHRcdG5mX3RhYmxlc19jb21taXRfY2hhaW4obmV0LCBjaGFpbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAyMy1cdH1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTA0NS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDQ2Olx0XHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2NvbGxlY3QoXHUwMDI2YWRsLCB0cmFucywgdHJhbnMtXHUwMDNlbXNnX3R5cGUpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwNDctXHRcdHN3aXRjaCAodHJhbnMtXHUwMDNlbXNnX3R5cGUpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTIzMC1cdG5mX3RhYmxlc19nZW5fbm90aWZ5KG5ldCwgc2tiLCBORlRfTVNHX05FV0dFTik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTIzMTpcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfbG9nKFx1MDAyNmFkbCwgbmZ0X2Jhc2Vfc2VxKG5ldCkpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzItXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzQtXHRuZnRfbmV0LVx1MDAzZXZhbGlkYXRlX3N0YXRlID0gTkZUX1ZBTElEQVRFX1NLSVA7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTIzNTpcdG5mX3RhYmxlc19jb21taXRfcmVsZWFzZShuZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzYtXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5ldGxpbmtfc3Vic3lzdGVtIG5mX3RhYmxlc19zdWJzeXMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NTktXHQuY2JcdFx0PSBuZl90YWJsZXNfY2IsXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU2MDpcdC5jb21taXRcdFx0PSBuZl90YWJsZXNfY29tbWl0LFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjEtXHQuYWJvcnRcdFx0PSBuZl90YWJsZXNfYWJvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NjQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBUYWJsZXMgQ29tbWl0IENhbGxiYWNrKioKCk9rYXksIHNvIGBuZl90YWJsZXNfY29tbWl0YCBpcyB0aGUgY3JpdGljYWwgY29tbWl0IGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgYG5mX3RhYmxlc19zdWJzeXNgLCBnb3QgaXQuIEFuZCBgX19uZl90YWJsZXNfYWJvcnRgIGlzIGNhbGxlZCBieSBgbmZfdGFibGVzX2Fib3J0YC4gVGhlc2UgYXJlIGJvdGggcmVhY2hhYmxlIGZ1bmN0aW9ucywgc28gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgdGFyZ2V0cy4gV2UgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoZXNlLCBhbmQgSSYjMzk7bGwgZm9jdXMgb24gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgLiBIbW0sIHdhaXQgYSBtaW51dGUsIGBfX25mX3RhYmxlc19hYm9ydGAgaXMgc3RhdGljPyBUaGF0IG1lYW5zIGl0JiMzOTtzIGxpa2VseSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0IGl0JiMzOTtzIGRlZmluZWQgaW4uIE5lZWQgdG8gY2hlY2sgaWYgaXQmIzM5O3MgaW5saW5lZC4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gb3B0aW1pemVkIGF3YXkgYW5kIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBXZSBuZWVkIHRvIGNoZWNrIHRoZSBhc3NlbWJseSBvciBnZW5lcmF0ZWQgY29kZSB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbmZfdGFibGVzX2Fib3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTEyOTQ9c3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTMwNy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMzA4OnN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMzA5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTUwNj1zdGF0aWMgaW50IG5mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MTMtXHRnY19zZXEgPSBuZnRfZ2Nfc2VxX2JlZ2luKG5mdF9uZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MTQ6XHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTUxNS1cdG5mdF9nY19zZXFfZW5kKG5mdF9uZXQsIGdjX3NlcSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNzQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5OiBBYm9ydGluZyBOZXRmaWx0ZXIgVGFibGVzKioKCk9rYXksIHNvIGBfX25mX3RhYmxlc19hYm9ydGAgaXMgZGlyZWN0bHkgY2FsbGVkIGJ5IGBuZl90YWJsZXNfYWJvcnRgLiBSaWdodCwgYG5mX3RhYmxlc19hYm9ydGAgZnVuY3Rpb25zIGFzIHRoZSBhYm9ydCBjYWxsYmFjayBmb3IgdGhlIGBuZl90YWJsZXNfc3Vic3lzYC4gU28sIHN0cmF0ZWdpY2FsbHksIEkgY2FuIHplcm8gaW4gb24gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCBhcyBteSBrZXkgZm9jdXMgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgaGVyZS4KCk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQgbWUganVzdCBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQWgsIHllcywgYE5GX1RBQkxFU2AgaXRzZWxmIGlzIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24uIEhhbmcgb24uLi4gYE5GX1RBQkxFU2AgKmRlcGVuZHMqIG9uIGBORVRGSUxURVJgLiBSaWdodCwgZ290IGl0LiBCZXR0ZXIgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYE5FVEZJTFRFUmAgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRGSUxURVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTI9bWVudSBcJiMzNDtDb3JlIE5ldGZpbHRlciBDb25maWd1cmF0aW9uXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTpjb25maWcgTkVURklMVEVSX0lOR1JFU1Ncbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgaW5ncmVzcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzOmNvbmZpZyBORVRGSUxURVJfRUdSRVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQtXHRib29sIFwmIzM0O05ldGZpbHRlciBlZ3Jlc3Mgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMTpjb25maWcgTkVURklMVEVSX1NLSVBfRUdSRVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjItXHRkZWZfYm9vbCBORVRGSUxURVJfRUdSRVNTIFx1MDAyNlx1MDAyNiAoTkVUX0NMU19BQ1QgfHwgSUZCKVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI0OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI1LVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI3OmNvbmZpZyBORVRGSUxURVJfRkFNSUxZX0JSSURHRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI4LVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMwOmNvbmZpZyBORVRGSUxURVJfRkFNSUxZX0FSUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxLVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzOmNvbmZpZyBORVRGSUxURVJfQlBGX0xJTktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cdGRlZl9ib29sIEJQRl9TWVNDQUxMXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzY6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0hPT0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBiYXNlIGhvb2sgZHVtcCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ2OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19BQ0NUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDctXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTkZBQ0NUIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1NDpjb25maWcgTkVURklMVEVSX05FVExJTktfUVVFVUVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBORlFVRVVFIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo2Mjpjb25maWcgTkVURklMVEVSX05FVExJTktfTE9HXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgTE9HIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NDpjb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgT1NGIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTA9aWYgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTExOmNvbmZpZyBORVRGSUxURVJfQ09OTkNPVU5UXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEyLVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9Mzg1PWNvbmZpZyBORl9DVF9ORVRMSU5LX0hFTFBFUlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zOTctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mzk4OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19HTFVFX0NUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzk5LVx0Ym9vbCBcJiMzNDtORlFVRVVFIGFuZCBORkxPRyBpbnRlZ3JhdGlvbiB3aXRoIENvbm5lY3Rpb24gVHJhY2tpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDQ3PWNvbmZpZyBORl9OQVRfT1ZTXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTA6Y29uZmlnIE5FVEZJTFRFUl9TWU5QUk9YWVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1MS1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTcyMT1jb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzI4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcyOTpjb25maWcgTkVURklMVEVSX1hUQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MzAtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgWHRhYmxlcyBzdXBwb3J0IChyZXF1aXJlZCBmb3IgaXBfdGFibGVzKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MzY9aWYgTkVURklMVEVSX1hUQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MzctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzM4OmNvbmZpZyBORVRGSUxURVJfWFRBQkxFU19DT01QQVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MzktXHRib29sIFwmIzM0O05ldGZpbHRlciBYdGFibGVzIDMyYml0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzQ2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc0Nzpjb25maWcgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzQ4LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgbGVnYWN5IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTc1Nz1jb21tZW50IFwmIzM0O1h0YWJsZXMgY29tYmluZWQgbW9kdWxlc1wmIzM0O1xubmV0L25ldGZpbHRlci9LY29uZmlnLTc1OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NTk6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzYwLVx0dHJpc3RhdGUgJiMzOTtuZm1hcmsgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzcyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc3Mzpjb25maWcgTkVURklMVEVSX1hUX0NPTk5NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzc0LVx0dHJpc3RhdGUgJiMzOTtjdG1hcmsgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzg0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjc4NTpjb25maWcgTkVURklMVEVSX1hUX1NFVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc4Ni1cdHRyaXN0YXRlICYjMzk7c2V0IHRhcmdldCBhbmQgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTc5OT1jb21tZW50IFwmIzM0O1h0YWJsZXMgdGFyZ2V0c1wmIzM0O1xubmV0L25ldGZpbHRlci9LY29uZmlnLTgwMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4MDE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQVVESVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MDItXHR0cmlzdGF0ZSBcJiMzNDtBVURJVCB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODExOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NIRUNLU1VNXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEyLVx0dHJpc3RhdGUgXCYjMzQ7Q0hFQ0tTVU0gdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODI2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyNzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgyOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Q0xBU1NJRllcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MzgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODM5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODQwLVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Q09OTk1BUktcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NDgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODQ5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODUwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtDT05OU0VDTUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTg2MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4NjE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NjItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0NUXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODcyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjg3Mzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9EU0NQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODc0LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtEU0NQXCYjMzQ7IGFuZCBcJiMzNDtUT1NcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04ODgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODg5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0hMXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODkwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtITFwmIzM0OyBob3BsaW1pdCB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTkwMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MDQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfSE1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MDUtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O0hNQVJLXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTE3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjkxODpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9JRExFVElNRVJcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MTktXHR0cmlzdGF0ZSAgXCYjMzQ7SURMRVRJTUVSIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTkyOS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MzA6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTEVEXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTMxLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtMRURcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTU0OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0xPR1xubmV0L25ldGZpbHRlci9LY29uZmlnLTk1NS1cdHRyaXN0YXRlIFwmIzM0O0xPRyB0YXJnZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NjQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTY1OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX01BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NjYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O01BUktcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTc0OmNvbmZpZyBORVRGSUxURVJfWFRfTkFUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTc1LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtTTkFUIGFuZCBETkFUXCYjMzQ7IHRhcmdldHMgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTk4MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5ODI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkVUTUFQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTgzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtORVRNQVBcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05OTEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6OTkyOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX05GTE9HXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTkzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtORkxPR1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMDEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTAwMjpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ORlFVRVVFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAwMy1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7TkZRVUVVRVwmIzM0OyB0YXJnZXQgU3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTAxNDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9OT1RSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAxNS1cdHRyaXN0YXRlICAmIzM5O1wmIzM0O05PVFJBQ0tcJiMzNDsgdGFyZ2V0IHN1cHBvcnQgKERFUFJFQ0FURUQpJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDIxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDIyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtSQVRFRVNUXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAzMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDMxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1JFRElSRUNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAzMi1cdHRyaXN0YXRlIFwmIzM0O1JFRElSRUNUIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNDItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA0Mzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9NQVNRVUVSQURFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA0NC1cdHRyaXN0YXRlIFwmIzM0O01BU1FVRVJBREUgdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA1Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDU3OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RFRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNTgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1RFRVwmIzM0OyAtIHBhY2tldCBjbG9uaW5nIHRvIGFsdGVybmF0ZSBkZXN0aW5hdGlvbiYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwNjctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTA2ODpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UUFJPWFlcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDY5LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtUUFJPWFlcJiMzNDsgdGFyZ2V0IHRyYW5zcGFyZW50IHByb3h5aW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDg4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwODk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVFJBQ0Vcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDkwLVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7VFJBQ0VcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTAwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMDE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExMDItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O1NFQ01BUktcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTEwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfVENQTVNTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTExMi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7VENQTVNTXCYjMzQ7IHRhcmdldCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEzNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTM3OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RDUE9QVFNUUklQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEzOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7VENQT1BUU1RSSVBcJiMzNDsgdGFyZ2V0IHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTQ3PWNvbW1lbnQgXCYjMzQ7WHRhYmxlcyBtYXRjaGVzXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE0OC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTQ5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQUREUlRZUEVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTUwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDthZGRydHlwZVwmIzM0OyBhZGRyZXNzIHR5cGUgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNTgtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE1OTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0JQRlxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNjAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2JwZlwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTY4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ0dST1VQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2OS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Y29udHJvbCBncm91cFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE3Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTc4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ0xVU1RFUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNzktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2NsdXN0ZXJcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTExOTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE5NDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTU1FTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTk1LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Y29tbWVudFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIwMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjA0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIwNS1cdHRyaXN0YXRlICAmIzM5O1wmIzM0O2Nvbm5ieXRlc1wmIzM0OyBwZXItY29ubmVjdGlvbiBjb3VudGVyIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjE0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTEFCRUxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjE2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjb25ubGFiZWxcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMjctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIyODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMjktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2Nvbm5saW1pdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIzNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjM4LVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7Y29ubm1hcmtcJiMzNDsgY29ubmVjdGlvbiBtYXJrIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQ2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNDc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQ4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjb25udHJhY2tcJiMzNDsgY29ubmVjdGlvbiB0cmFja2luZyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI1OS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjYwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ1BVXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI2MS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7Y3B1XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjY4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNjk6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI3MC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZGNjcFwmIzM0OyBwcm90b2NvbCBtYXRjaCBzdXBwb3J0IChERVBSRUNBVEVEKSYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyODAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI4MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RFVkdST1VQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4Mi1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZGV2Z3JvdXBcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyODktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI5MDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RTQ1Bcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjkxLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtkc2NwXCYjMzQ7IGFuZCBcJiMzNDt0b3NcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMDQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMwNTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0VDTlxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMDYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2VjblwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMxMy1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzE0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRVNQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMxNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZXNwXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzIyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9IQVNITElNSVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzI0LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtoYXNobGltaXRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMzctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMzODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0hFTFBFUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMzktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2hlbHBlclwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM0Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzQ4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSExcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzQ5LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtobFwmIzM0OyBob3BsaW1pdC9UVEwgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNTUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM1Njpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0lQQ09NUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNTctXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwY29tcFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM2NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzY1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNjYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwcmFuZ2VcJiMzNDsgYWRkcmVzcyByYW5nZSBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzc1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBWU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNzYtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwdnNcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzODQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM4NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0wyVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzg2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtsMnRwXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzk0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzOTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEhcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzk2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtsZW5ndGhcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MDMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQwNDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0xJTUlUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQwNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bGltaXRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQxNDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX01BQ1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MTUtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O21hY1wmIzM0OyBhZGRyZXNzIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDIyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NQVJLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQyNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bWFya1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQzMS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDMyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTVVMVElQT1JUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQzMy1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bXVsdGlwb3J0XCYjMzQ7IE11bHRpcGxlIHBvcnQgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NDEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ0Mjpjb25maWcgTkVURklMVEVSX1hUX01BVENIX05GQUNDVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NDMtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O25mYWNjdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ1MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDUyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfT1NGXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ1My1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7b3NmXCYjMzQ7IFBhc3NpdmUgT1MgZmluZ2VycHJpbnQgbWF0Y2gmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDY1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NjY6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9PV05FUlxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NjctXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O293bmVyXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDczLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NzQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9QT0xJQ1lcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDc1LVx0dHJpc3RhdGUgJiMzOTtJUHNlYyBcJiMzNDtwb2xpY3lcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0ODQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BIWVNERVZcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDg2LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtwaHlzZGV2XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDk0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0OTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9QS1RUWVBFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5Ni1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7cGt0dHlwZVwmIzM0OyBwYWNrZXQgdHlwZSBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUwNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTA3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUVVPVEFcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTA4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtxdW90YVwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTE3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MTgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3JhdGVlc3RcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUyNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JFQUxNXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyOC1cdHRyaXN0YXRlICAmIzM5O1wmIzM0O3JlYWxtXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTQwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1NDE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9SRUNFTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTQyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtyZWNlbnRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU1MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NDVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTUyLVx0dHJpc3RhdGUgICYjMzk7XCYjMzQ7c2N0cFwmIzM0OyBwcm90b2NvbCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTYzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU09DS0VUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2NC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7c29ja2V0XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTc5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1ODA6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TVEFURVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1ODEtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3N0YXRlXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTkwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1OTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTkyLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtzdGF0aXN0aWNcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTktXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYwMDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NUUklOR1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MDEtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtzdHJpbmdcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MTItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYxMzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1RDUE1TU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MTQtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3RjcG1zc1wmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYyMi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjIzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVElNRVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MjQtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3RpbWVcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTYzNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1UzMlxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MzgtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3UzMlwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3MDEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byB0aGUgY29yZSBjb25maWd1cmF0aW9uIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIGBORVRGSUxURVJgIGlzIHRoZSBjZW50cmFsIHBpZWNlLCBvYnZpb3VzbHkuIFRoYXQgYWxzbyBtZWFucyBgTkZfVEFCTEVTYCBpcyBjcml0aWNhbCBpbiBhbGwgdGhpcy4gTm93LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGNvbW1pdC9hYm9ydCBmdW5jdGlvbnMuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gSG1tLCByaWdodC4uLiBgbmZfdGFibGVzX2NvbW1pdGAgaXMgc3RhdGljLiBUaGF0IHVzdWFsbHkgbWVhbnMgaXQmIzM5O3MgbG9jYWxpemVkLCBhIGhlbHBlciB3aXRoaW4gaXRzIG93biBzY29wZS4gT2theSwgdGhlIG5leHQgdGhpbmcgaXMgdG8gZGV0ZXJtaW5lIHdobyYjMzk7cyBjYWxsaW5nIGl0PyBJcyB0aGVyZSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCB1c2VzIHRoaXM/IEFoYSEgSGVyZSB3ZSBnbywgYG5mX3RhYmxlc19jb21taXRgIGlzIGNhbGxlZCBieSBgbmZuZXRsaW5rX3Jjdl9iYXRjaGAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmNgLiBUaGF0JiMzOTtzIHRoZSBsaW5rIEkgd2FzIGxvb2tpbmcgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwNzYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIEludGVybmFsczogQSBRdWljayBPYnNlcnZhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBqdXN0IHRyYWNpbmcgdGhyb3VnaCB0aGUgbmV0ZmlsdGVyIGNvZGUsIGFuZCBJIG5lZWQgdG8gcmVjYWxpYnJhdGUgbXkgbWVudGFsIG1vZGVsIGZvciBhIG1vbWVudC4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgcmVnaXN0cmF0aW9uIG9mIGBuZl90YWJsZXNfY29tbWl0YCB3YXMgaGFwcGVuaW5nIGVsc2V3aGVyZSwgYnV0IGhhbmcgb24uLi4gbG9va2luZyBhdCB0aGUgY29kZSBub3csIEkgc2VlIGl0JiMzOTtzIGFjdHVhbGx5IHJlZ2lzdGVyZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBgbmZfdGFibGVzX3N1YnN5c2Agc3RydWN0dXJlLiBUaGlzIGxpa2VseSBhZmZlY3RzIGhvdyBpdCBpcyBhY3RpdmF0ZWQgLSBJIG5lZWQgdG8gYWRqdXN0IG15IG1lbnRhbCBwYXRoIGZyb20gaG93IHRoaXMgaXMgY2FsbGVkLiBJIGhhZCBhc3N1bWVkIHNvbWUga2luZCBvZiBpbmRpcmVjdCByZWdpc3RyYXRpb24sIHBlcmhhcHMgdHJpZ2dlcmVkIGJ5IGEgbW9kdWxlIGxvYWQuIENsZWFybHksIHRoYXQgaXMgbm90IHRoZSBjYXNlLiBUaGlzIGRpcmVjdCByZWdpc3RyYXRpb24gbGlrZWx5IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSB0aW1pbmcgYW5kIGxpZmVjeWNsZSBkZXBlbmRlbmNpZXMuIFRoYXQmIzM5O3MgZ29vZCB0byBrZWVwIGluIG1pbmQsIGFuZCBtaWdodCBpbXBhY3QgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJhY3Rpb25zIHdoZW4gZGVidWdnaW5nIHRoaXMgYXJlYSBhZ2FpbiBpbiB0aGUgZnV0dXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gdGhpbmtpbmcgb2YgdGhpcyBjb3JyZWN0bHkgd2hlbiBJIGV4YW1pbmUgdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlIG5leHQgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfdGFibGVzX3N1YnN5cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTM5PXN0YXRpYyBib29sIG5mX3RhYmxlc192YWxpZF9nZW5pZChzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBnZW5pZClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU1NC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNTU1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZuZXRsaW5rX3N1YnN5c3RlbSBuZl90YWJsZXNfc3Vic3lzID0ge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NTYtXHQubmFtZVx0XHQ9IFwmIzM0O25mX3RhYmxlc1wmIzM0Oyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMjIzOT1zdGF0aWMgaW50IF9faW5pdCBuZl90YWJsZXNfbW9kdWxlX2luaXQodm9pZClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMjI3NS1cdC8qIG11c3QgYmUgbGFzdCAqL1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTIyNzY6XHRlcnIgPSBuZm5ldGxpbmtfc3Vic3lzX3JlZ2lzdGVyKFx1MDAyNm5mX3RhYmxlc19zdWJzeXMpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIyNzctXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEyMjk5PXN0YXRpYyB2b2lkIF9fZXhpdCBuZl90YWJsZXNfbW9kdWxlX2V4aXQodm9pZClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMzAwLXtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEyMzAxOlx0bmZuZXRsaW5rX3N1YnN5c191bnJlZ2lzdGVyKFx1MDAyNm5mX3RhYmxlc19zdWJzeXMpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIzMDItXHRuZXRsaW5rX3VucmVnaXN0ZXJfbm90aWZpZXIoXHUwMDI2bmZ0X25sX25vdGlmaWVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3NTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aXZlIFRob3VnaHQgUHJvY2VzcyoqCgpBbHJpZ2h0LCBzbyB0aGUgY2x1ZSBsZWFkcyBtZSB0byBgbmZuZXRsaW5rX3N1YnN5c2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGFsbCBjb25uZWN0ZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBNeSBwcmltYXJ5IHRhcmdldCBpcyB0byB1bmRlcnN0YW5kIHdoZXJlIGBjb21taXRgIGlzIGNhbGxlZC4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHRyYWNpbmcgdGhlIGxvZ2ljIGZsb3cgaGVyZS4gSSYjMzk7bGwgb3BlbiB1cCBgbmZuZXRsaW5rLmNgIGFuZCBzdGFydCBteSBzZWFyY2guIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgc291cmNlIGNvZGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXC5jb21taXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5MzEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcsIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIG5mbmV0bGlua19zdWJzeXMgQ29tbWl0IENhbGxiYWNrKioKCk9rYXksIGhvbGQgb24gYSBtaW51dGUuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBjb21taXRgIGNhbGxiYWNrIHdpdGhpbiB0aGUgYG5mbmV0bGlua19zdWJzeXNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2FsbGJhY2sgYW5kIGhvdyBpdCBmdW5jdGlvbnMgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29udGV4dC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBpdCBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBUaGlzIGBjb21taXRgIGZ1bmN0aW9uIGlzIGxpa2VseSB0aGUgY3J1Y2lhbCBwb2ludCB3aGVyZSBjaGFuZ2VzIGFyZSBmaW5hbGl6ZWQsIG9yIHBlcmhhcHMgd2hlbiB0cmFuc2FjdGlvbnMgYXJlIGNvbXBsZXRlZC4gV2hhdCBhcmUgdGhlIHNwZWNpZmljIG9wZXJhdGlvbnMgdGhhdCBhcmUgdGllZCBpbnRvIHRoaXM/IFdoYXQgdHlwZXMgb2YgZGF0YSBvciBldmVudHMgdHJpZ2dlciB0aGlzIGNhbGxiYWNrPyBXaGF0IHJlc291cmNlcyBhcmUgYmVpbmcgcmVsZWFzZWQgb3IgY29tbWl0dGVkIHdpdGhpbj8gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBpdHMgaW1wbGVtZW50YXRpb24gdG8gZGV0ZXJtaW5lIGl0cyBleGFjdCBiZWhhdmlvciB3aXRoaW4gTmV0ZmlsdGVyJiMzOTtzIGJyb2FkZXIgZnJhbWV3b3JrLiBJcyBpdCBoYW5kbGluZyBtZW1vcnkgYWxsb2NhdGlvbj8gSXMgaXQgY29vcmRpbmF0aW5nIHdpdGggb3RoZXIgTmV0ZmlsdGVyIGNvbXBvbmVudHM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb21taXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM9MzY5PXN0YXRpYyB2b2lkIG5mbmV0bGlua19yY3ZfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy00MDgtXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jOjQwOTpcdGlmICghc3MtXHUwMDNldmFsaWRfZ2VuaWQgfHwgIXNzLVx1MDAzZWNvbW1pdCB8fCAhc3MtXHUwMDNlYWJvcnQpIHtcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNDEwLVx0XHRuZm5sX3VubG9jayhzdWJzeXNfaWQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNTczLVx0fSBlbHNlIGlmIChzdGF0dXMgPT0gTkZOTF9CQVRDSF9ET05FKSB7XG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jOjU3NDpcdFx0ZXJyID0gc3MtXHUwMDNlY29tbWl0KG5ldCwgb3NrYik7XG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTU3NS1cdFx0aWYgKGVyciA9PSAtRUFHQUlOKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzkxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIG5mX3RhYmxlcyBDb21taXQvQWJvcnQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGNhbGxzLCBgc3MtJmd0O2NvbW1pdChuZXQsIG9za2IpYCBhbmQgYHNzLSZndDthYm9ydChuZXQsIG9za2IsIE5GTkxfQUJPUlRfTk9ORSlgIGFyZSBkZWZpbml0ZWx5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBUaGF0IG1lYW5zIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXJlIHRoZSByZWxldmFudCBzeW1ib2xzLCB3aGljaCBzZWVtcyByaWdodCwgZ2l2ZW4gdGhlIGNvbnRleHQuCgpXYWl0IGEgc2Vjb25kLi4uIGFyZW4mIzM5O3QgdGhvc2Ugc3RhdGljPyBIbW0sIGFyZSB0aGV5IGlubGluZWQ/IE5vLCB0aGV5JiMzOTtyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBuZl90YWJsZXNfc3Vic3lzYCwgc28gdGhleSAqY2FuJiMzOTt0KiBiZSBpbmxpbmVkLiBUaGF0IG1lYW5zIHRoZXkgd2lsbCBoYXZlIGRpc3RpbmN0LCBpZGVudGlmaWFibGUgc3ltYm9sIGFkZHJlc3Nlcywgd2hpY2ggaXMgZ3JlYXQgZm9yIG91ciBhbmFseXNpcy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZC4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgaXMgc3RhdGljIGFuZCBvbmx5IGNhbGxlZCB3aXRoaW4gYG5mX3RhYmxlc19jb21taXRgLiBJdCAqbWlnaHQqIGJlIGlubGluZWQsIHNvIGl0JiMzOTtzIGxlc3Mgb2YgYSBmb2N1cy4gU2ltaWxhcmx5LCBgX19uZl90YWJsZXNfYWJvcnRgIGlzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgd2l0aGluIGBuZl90YWJsZXNfYWJvcnRgLiBBZ2FpbiwgcG9zc2libGUgaW5saW5pbmcuIFNvLCB5ZXMsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXJlIGRlZmluaXRlbHkgdGhlIGJlc3QgZm9jdXMgcG9pbnRzLgoKTm93LCBsZXQmIzM5O3Mgem9vbSBiYWNrIGluIG9uIHRoZSBwYXRjaCBpdHNlbGYuIE9rYXksIHRoZSBwYXRjaCYjMzk7cyBjaGFuZ2VzIGFyZSBpbnNpZGUgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAsIGp1c3QgYXMgZXhwZWN0ZWQuIFRoZSBnb2FsIGhlcmUgaXMgdG8gY29ycmVjdGx5IG1hcmsgc2V0cyBhcyAmIzM5O2RlYWQmIzM5OyBkdXJpbmcgZGVsZXRpb24gYW5kIGRlc3RydWN0aW9uLCBhbmQgdGhlcmUgaXMgYWxzbyBhbiB1bnVzZWQgbGlzdCBoZWFkIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgYWJvcnQgcGF0aCwgYmFzZWQgb24gdGhlIHJlYXNvbmluZyBnaXZlbi4gVGhlIGVmZmVjdCBvZiB0aGUgY2hhbmdlIGlzIHRvIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMuCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIHdoYXQgSSBuZWVkZWQuIFdpdGggYE5FVEZJTFRFUmAgYW5kIGBORl9UQUJMRVNgIGNvbmZpZ3VyZWQsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXJlIGRlZmluaXRlbHkgdGhlIHJpZ2h0IHN5bWJvbHMgdG8gaW5zcGVjdCBmdXJ0aGVyLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBuYW1pbmcgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfdGFibGVzX2Fib3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTEyNDA9c3RhdGljIHZvaWQgbmZfdGFibGVzX21vZHVsZV9hdXRvbG9hZChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyNTUtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTI1NjpzdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjU3LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTI5ND1zdGF0aWMgdm9pZCBuZnRfc2V0X2Fib3J0X3VwZGF0ZShzdHJ1Y3QgbmZ0YWJsZXNfcGVybmV0ICpuZnRfbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMzA3LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEzMDg6c3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEzMDkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDk5LVx0XHRuZnRfdHJhbnNfbGlzdF9kZWwodHJhbnMpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MDA6XHRcdG5mX3RhYmxlc19hYm9ydF9yZWxlYXNlKHRyYW5zKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTAxLVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTA1LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MDY6c3RhdGljIGludCBuZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MDctXHRcdFx0ICAgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MTMtXHRnY19zZXEgPSBuZnRfZ2Nfc2VxX2JlZ2luKG5mdF9uZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MTQ6XHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTUxNS1cdG5mdF9nY19zZXFfZW5kKG5mdF9uZXQsIGdjX3NlcSk7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5ldGxpbmtfc3Vic3lzdGVtIG5mX3RhYmxlc19zdWJzeXMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjAtXHQuY29tbWl0XHRcdD0gbmZfdGFibGVzX2NvbW1pdCxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNTYxOlx0LmFib3J0XHRcdD0gbmZfdGFibGVzX2Fib3J0LFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjItXHQudmFsaWRfZ2VuaWRcdD0gbmZfdGFibGVzX3ZhbGlkX2dlbmlkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE5MwoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiAxOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbmZfdGFibGVzIFBhdGNoKioKCk9rYXksIHNvIGBuZl90YWJsZXNfYWJvcnRgICppcyogdGhlIGtleSBmdW5jdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdCwgdGhhdCBjb25maXJtcyBteSBpbml0aWFsIGluc3RpbmN0LiBOb3csIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgY2hlY2sgdG8gbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgYWxsIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBjb3ZlcmVkLiBgTkZfVEFCTEVTYCBpcyB0aGUgb2J2aW91cyBvbmUsIGl0JiMzOTtzIHRoZSBjb3JlIG9mIHRoaXMuIGBORVRGSUxURVJgIGlzIGVzc2VudGlhbCBhcyB3ZWxsLCBvZiBjb3Vyc2UsIHRoZSB1bmRlcmx5aW5nIG5ldGZpbHRlciBmcmFtZXdvcmsuIExldCBtZSBzZWUuLi4gb2gsIGBORVRGSUxURVJfTkVUTElOS2AgaXMgYXV0b21hdGljYWxseSBwdWxsZWQgaW4gYnkgYE5GX1RBQkxFU2AsIHNvIHdlIGRvbiYjMzk7dCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIGl0LiBGaW5lLCBgTkZfVEFCTEVTYCBhbG9uZSB3b3VsZCBwcm9iYWJseSBzdWZmaWNlLCBidXQgaXQmIzM5O3MgZ29vZCBwcmFjdGljZSB0byBhbHNvIGluY2x1ZGUgYE5FVEZJTFRFUmAgZm9yIGdvb2QgbWVhc3VyZSwganVzdCBpbiBjYXNlLgoKQWxyaWdodCwgdGltZSB0byBwcmVwYXJlIHRoZSBvdXRwdXQuIFRoZSBmdXp6aW5nIGZsYWcsIGBXb3J0aEZ1enppbmdgLCBpcyBkZWZpbml0ZWx5IHRydWUgaGVyZSwgYWJzb2x1dGVseS4gVGhlIHJlYXNvbmluZyBpcyBzb2xpZDogVGhpcyBwYXRjaCYjMzk7cyBwcmltYXJ5IGZ1bmN0aW9uIGlzIHRvIGNvcnJlY3QgaG93IHNldHMgYXJlIG1hcmtlZCBpbiB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBkZWxldGlvbi9kZXN0cnVjdGlvbiwgYW5kIGhvdyB0aGlzIGlzIGFwcGxpZWQgZHVyaW5nIHRyYW5zYWN0aW9ucy4gSXQgYWxzbyByZW1vdmVzIGEgdXNlbGVzcyBsaXN0IGhlYWQuIFRoaXMgY2hhbmdlcyB0aGUgd2F5IHRoYXQgbmZfdGFibGVzIHNldHMgYXJlIG1hbmFnZWQgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgc2luY2UgdGhlIGNoYW5nZXMgZm9jdXMgb24gdGhlbS4gRmluYWxseSwgYmFzZWQgb24gb3VyIGludmVzdGlnYXRpb24sIHRoZSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGBORVRGSUxURVJgIGFuZCBgTkZfVEFCTEVTYC4gVGhhdCBzZWVtcyBjb21wbGV0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTM6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl90YWJsZXNfY29tbWl0JiMzNDssCiAgICAmIzM0O25mX3RhYmxlc19hYm9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgbmZfdGFibGVzIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgdG8gcHJvcGVybHkgbWFyayBzZXRzIGFzIGRlYWQgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHJlbW92ZXMgYW4gdW51c2VkIGxpc3QgaGVhZCBpbiB0aGUgYWJvcnQgcGF0aC4gVGhpcyBhbHRlcnMgdGhlIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIGFib3J0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O05GX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX3RhYmxlc19jb21taXQmIzM0OywKICAgICYjMzQ7bmZfdGFibGVzX2Fib3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBuZl90YWJsZXMgY29tbWl0IGFuZCBhYm9ydCBsb2dpYyB0byBwcm9wZXJseSBtYXJrIHNldHMgYXMgZGVhZCBkdXJpbmcgZGVsZXRpb24gYW5kIGRlc3RydWN0aW9uLCBhbmQgcmVtb3ZlcyBhbiB1bnVzZWQgbGlzdCBoZWFkIGluIHRoZSBhYm9ydCBwYXRoLiBUaGlzIGFsdGVycyB0aGUgc3RhdGUgbWFuYWdlbWVudCBvZiBuZl90YWJsZXMgc2V0cyBkdXJpbmcgdHJhbnNhY3Rpb24gY29tbWl0cyBhbmQgYWJvcnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzIGBkZWFkYCBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgcGhhc2UgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgIG1lc3NhZ2VzLiBJdCBhbHNvIHJlbW92ZXMgYW4gdW51c2VkIGBzZXRfdXBkYXRlX2xpc3RgIHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIHN0YXRlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbG9naWMgYnVncyBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgYWNjZXNzZXMgdG8gc2V0cyB0aGF0IGFyZSBiZWluZyBkZWxldGVkLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLCBhbmQgbm8gZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGlzIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhODFlNTY2YzJlZDNjNGJhNjViNTQ5NzczNTgxMzI5NjIxOWYyNjgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTM6MjA6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCmluZGV4IGMxMTJlY2M0ZmNhMzIuLjIxMTczMzNmNzVhY2YgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCkBAIC0xMDg5NCw2ICYjNDM7MTA4OTQsMTAgQEAgc3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsCiAJCW5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpOwogCiAJCXN3aXRjaCAodHJhbnMtJmd0O21zZ190eXBlKSB7CiYjNDM7CQljYXNlIE5GVF9NU0dfREVMU0VUOgomIzQzOwkJY2FzZSBORlRfTVNHX0RFU1RST1lTRVQ6CiYjNDM7CQkJbmZ0X3RyYW5zX3NldCh0cmFucyktJmd0O2RlYWQgPSAxOwomIzQzOwkJCWJyZWFrOwogCQljYXNlIE5GVF9NU0dfREVMU0VURUxFTToKIAkJCXRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTsKIAkJCWlmICghdGUtJmd0O3NldC0mZ3Q7b3BzLSZndDtjb21taXQpCkBAIC0xMTMwNSw3ICYjNDM7MTEzMDksNiBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pCiB7CiAJc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCA9IG5mdF9wZXJuZXQobmV0KTsKIAlzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7Ci0JTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7CiAJc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTsKIAlzdHJ1Y3QgbmZ0X2N0eCBjdHggPSB7CiAJCS5uZXQgPSBuZXQsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxMzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gUmlnaHQgYXdheSwgSSBzZWUgaXQmIzM5O3MgbW9kaWZ5aW5nIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGludHJvZHVjaW5nIHNvbWUgaGFuZGxpbmcgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhlIGtleSBsaW5lIHRoYXQganVtcHMgb3V0IGlzIGBuZnRfdHJhbnNfc2V0KHRyYW5zKS0mZ3Q7ZGVhZCA9IDE7YC4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgLSZndDtkZWFkID0gMTtgLiBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBXaGF0IGRvZXMgdGhpcyBmbGFnIGRvPyBJcyB0aGlzIGFib3V0IG1hcmt0aW5nIHRoZSBgbmZ0X3NldGAgYXMgZGVhZCB3aGVuIGRlbGV0aW5nIG9yIGRlc3Ryb3lpbmcgaXQ/CgpCdXQgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYG5mdF90cmFuc19zZXQodHJhbnMpYCBhY3R1YWxseSAqcmV0dXJucyouICBJcyBpdCBhIGBzdHJ1Y3QgbmZ0X3NldCAqYCwgb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gaXQ/IEkgc2hvdWxkIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBuZnRfdHJhbnNfc2V0YCB0byBiZSBjZXJ0YWluLiBDb250ZXh0IGlzIGtleSBoZXJlOyBpdCBkaWN0YXRlcyB0aGUgaW1wbGljYXRpb25zIG9mIGAtJmd0O2RlYWQgPSAxO2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF90cmFuc19zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0yMjU9c3RhdGljIHZvaWQgX19uZnRfc2V0X3RyYW5zX2JpbmQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9zZXQgKnNldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0yMzgtXHRcdGNhc2UgTkZUX01TR19ORVdTRVQ6XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoyMzk6XHRcdFx0aWYgKG5mdF90cmFuc19zZXQodHJhbnMpID09IHNldClcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjI0MDpcdFx0XHRcdG5mdF90cmFuc19zZXRfYm91bmQodHJhbnMpID0gYmluZDtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTI0MS1cdFx0XHRicmVhaztcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz01NjU9c3RhdGljIHZvaWQgbmZ0X3RyYW5zX2NvbW1pdF9saXN0X2FkZF90YWlsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF90cmFucyAqdHJhbnMpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTY4LVx0c3RydWN0IG5mdF90cmFuc19iaW5kaW5nICpiaW5kaW5nO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTY5Olx0c3RydWN0IG5mdF90cmFuc19zZXQgKnRyYW5zX3NldDtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTU3MC1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01ODAtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo1ODE6XHRcdGlmICghbmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTgyOlx0XHQgICAgbmZ0X3NldF9pc19hbm9ueW1vdXMobmZ0X3RyYW5zX3NldCh0cmFucykpKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTgzLVx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2YmluZGluZy1cdTAwM2ViaW5kaW5nX2xpc3QsIFx1MDAyNm5mdF9uZXQtXHUwMDNlYmluZGluZ19saXN0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz03ODM9c3RhdGljIGludCBuZnRfZGVscnVsZV9ieV9jaGFpbihzdHJ1Y3QgbmZ0X2N0eCAqY3R4KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc5OC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjc5OTpzdGF0aWMgaW50IF9fbmZ0X3RyYW5zX3NldF9hZGQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgaW50IG1zZ190eXBlLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODAwLVx0XHRcdCAgICAgICBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwMi17XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MDM6XHRzdHJ1Y3QgbmZ0X3RyYW5zX3NldCAqdHJhbnNfc2V0O1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODA0LVx0c3RydWN0IG5mdF90cmFucyAqdHJhbnM7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MDUtXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MDY6XHR0cmFucyA9IG5mdF90cmFuc19hbGxvYyhjdHgsIG1zZ190eXBlLCBzaXplb2Yoc3RydWN0IG5mdF90cmFuc19zZXQpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwNy1cdGlmICh0cmFucyA9PSBOVUxMKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgxNC1cdGlmIChtc2dfdHlwZSA9PSBORlRfTVNHX05FV1NFVCBcdTAwMjZcdTAwMjYgY3R4LVx1MDAzZW5sYVtORlRBX1NFVF9JRF0gXHUwMDI2XHUwMDI2ICFkZXNjKSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MTU6XHRcdG5mdF90cmFuc19zZXRfaWQodHJhbnMpID1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgxNi1cdFx0XHRudG9obChubGFfZ2V0X2JlMzIoY3R4LVx1MDAzZW5sYVtORlRBX1NFVF9JRF0pKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MTgtXHR9XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MTk6XHRuZnRfdHJhbnNfc2V0KHRyYW5zKSA9IHNldDtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgyMC1cdGlmIChkZXNjKSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjE6XHRcdG5mdF90cmFuc19zZXRfdXBkYXRlKHRyYW5zKSA9IHRydWU7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjI6XHRcdG5mdF90cmFuc19zZXRfZ2NfaW50KHRyYW5zKSA9IGRlc2MtXHUwMDNlZ2NfaW50O1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODIzOlx0XHRuZnRfdHJhbnNfc2V0X3RpbWVvdXQodHJhbnMpID0gZGVzYy1cdTAwM2V0aW1lb3V0O1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODI0Olx0XHRuZnRfdHJhbnNfc2V0X3NpemUodHJhbnMpID0gZGVzYy1cdTAwM2VzaXplO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODI1LVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzMC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgzMTpzdGF0aWMgaW50IG5mdF90cmFuc19zZXRfYWRkKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIGludCBtc2dfdHlwZSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzMi1cdFx0XHQgICAgIHN0cnVjdCBuZnRfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MzMte1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODM0Olx0cmV0dXJuIF9fbmZ0X3RyYW5zX3NldF9hZGQoY3R4LCBtc2dfdHlwZSwgc2V0LCBOVUxMKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzNS19XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9ODk1PXN0YXRpYyBpbnQgbmZ0X2RlbHNldChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBzdHJ1Y3QgbmZ0X3NldCAqc2V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTg5OC1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjg5OTpcdGVyciA9IG5mdF90cmFuc19zZXRfYWRkKGN0eCwgTkZUX01TR19ERUxTRVQsIHNldCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy05MDAtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTQ4MTI9c3RhdGljIHN0cnVjdCBuZnRfc2V0ICpuZnRfc2V0X2xvb2t1cF9ieWlkKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy00ODE3LVx0dTMyIGlkID0gbnRvaGwobmxhX2dldF9iZTMyKG5sYSkpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NDgxODpcdHN0cnVjdCBuZnRfdHJhbnNfc2V0ICp0cmFucztcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTQ4MTktXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9NTQzNj1zdGF0aWMgaW50IG5mX3RhYmxlc19uZXdzZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01NjMyLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTYzMzpcdFx0cmV0dXJuIF9fbmZ0X3RyYW5zX3NldF9hZGQoXHUwMDI2Y3R4LCBORlRfTVNHX05FV1NFVCwgc2V0LCBcdTAwMjZkZXNjKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTU2MzQtXHR9XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTcxNy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjU3MTg6XHRlcnIgPSBuZnRfdHJhbnNfc2V0X2FkZChcdTAwMjZjdHgsIE5GVF9NU0dfTkVXU0VULCBzZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTcxOS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9Njg3ND12b2lkIG5mdF9zZXRfZWxlbV9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNjg4Ni0vKiBEcm9wIHJlZmVyZW5jZXMgYW5kIGRlc3Ryb3kuIENhbGxlZCBmcm9tIGFib3J0IHBhdGguICovXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo2ODg3OnN0YXRpYyB2b2lkIG5mdF90cmFuc19zZXRfZWxlbV9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGUpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy02ODg4LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDI0MD1zdGF0aWMgdm9pZCBuZnRfY29tbWl0X3JlbGVhc2Uoc3RydWN0IG5mdF90cmFucyAqdHJhbnMpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAyNjctXHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVDpcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMjY4Olx0XHRuZnRfc2V0X2Rlc3Ryb3koXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDI2OS1cdFx0YnJlYWs7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA4ODM9c3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4OTgtXHRcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA4OTk6XHRcdFx0bmZ0X3RyYW5zX3NldCh0cmFucyktXHUwMDNlZGVhZCA9IDE7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkwMC1cdFx0XHRicmVhaztcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDkzNz1zdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTYxLVx0XHRjYXNlIE5GVF9NU0dfTkVXU0VUOlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5NjI6XHRcdFx0aWYgKCFuZnRfdHJhbnNfc2V0X3VwZGF0ZSh0cmFucykgXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDk2MzpcdFx0XHQgICAgbmZ0X3NldF9pc19hbm9ueW1vdXMobmZ0X3RyYW5zX3NldCh0cmFucykpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5NjQ6XHRcdFx0ICAgICFuZnRfdHJhbnNfc2V0X2JvdW5kKHRyYW5zKSkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA5NjUtXHRcdFx0XHRwcl93YXJuX29uY2UoXCYjMzQ7bmZ0YWJsZXMgcnVsZXNldCB3aXRoIHVuYm91bmQgc2V0XFxuXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyMC1cdFx0XHRsaXN0X2RlbChcdTAwMjZuZnRfdHJhbnNfY29udGFpbmVyX3NldCh0cmFucyktXHUwMDNlbGlzdF90cmFuc19uZXdzZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjE6XHRcdFx0aWYgKG5mdF90cmFuc19zZXRfdXBkYXRlKHRyYW5zKSkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjI6XHRcdFx0XHRzdHJ1Y3QgbmZ0X3NldCAqc2V0ID0gbmZ0X3RyYW5zX3NldCh0cmFucyk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyMy1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTI0Olx0XHRcdFx0V1JJVEVfT05DRShzZXQtXHUwMDNldGltZW91dCwgbmZ0X3RyYW5zX3NldF90aW1lb3V0KHRyYW5zKSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEyNTpcdFx0XHRcdFdSSVRFX09OQ0Uoc2V0LVx1MDAzZWdjX2ludCwgbmZ0X3RyYW5zX3NldF9nY19pbnQodHJhbnMpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTI2LVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjc6XHRcdFx0XHRpZiAobmZ0X3RyYW5zX3NldF9zaXplKHRyYW5zKSlcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTI4Olx0XHRcdFx0XHRXUklURV9PTkNFKHNldC1cdTAwM2VzaXplLCBuZnRfdHJhbnNfc2V0X3NpemUodHJhbnMpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTI5LVx0XHRcdH0gZWxzZSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzMDpcdFx0XHRcdG5mdF9jbGVhcihuZXQsIG5mdF90cmFuc19zZXQodHJhbnMpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTMxLVx0XHRcdFx0LyogVGhpcyBhdm9pZHMgaGl0dGluZyAtRUJVU1kgd2hlbiBkZWxldGluZyB0aGUgdGFibGVcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEzMy1cdFx0XHRcdCAqL1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMzQ6XHRcdFx0XHRpZiAobmZ0X3NldF9pc19hbm9ueW1vdXMobmZ0X3RyYW5zX3NldCh0cmFucykpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMzU6XHRcdFx0XHQgICAgIWxpc3RfZW1wdHkoXHUwMDI2bmZ0X3RyYW5zX3NldCh0cmFucyktXHUwMDNlYmluZGluZ3MpKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMzYtXHRcdFx0XHRcdG5mdF91c2VfZGVjKFx1MDAyNnRhYmxlLVx1MDAzZXVzZSk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEzNy1cdFx0XHR9XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzODpcdFx0XHRuZl90YWJsZXNfc2V0X25vdGlmeShcdTAwMjZjdHgsIG5mdF90cmFuc19zZXQodHJhbnMpLFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMzktXHRcdFx0XHRcdCAgICAgTkZUX01TR19ORVdTRVQsIEdGUF9LRVJORUwpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTQzLVx0XHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVDpcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTQ0Olx0XHRcdG5mdF90cmFuc19zZXQodHJhbnMpLVx1MDAzZWRlYWQgPSAxO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExNDU6XHRcdFx0bGlzdF9kZWxfcmN1KFx1MDAyNm5mdF90cmFuc19zZXQodHJhbnMpLVx1MDAzZWxpc3QpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExNDY6XHRcdFx0bmZfdGFibGVzX3NldF9ub3RpZnkoXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTQ3LVx0XHRcdFx0XHQgICAgIHRyYW5zLVx1MDAzZW1zZ190eXBlLCBHRlBfS0VSTkVMKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTI1Nj1zdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI3NS1cdGNhc2UgTkZUX01TR19ORVdTRVQ6XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTI3NjpcdFx0bmZ0X3NldF9kZXN0cm95KFx1MDAyNmN0eCwgbmZ0X3RyYW5zX3NldCh0cmFucykpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyNzctXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyNzgtXHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMjc5Olx0XHRuZnRfdHJhbnNfc2V0X2VsZW1fZGVzdHJveShcdTAwMjZjdHgsIG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucykpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyODAtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExMzA4PXN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQwOS1cdFx0XHRsaXN0X2RlbChcdTAwMjZuZnRfdHJhbnNfY29udGFpbmVyX3NldCh0cmFucyktXHUwMDNlbGlzdF90cmFuc19uZXdzZXQpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0MTA6XHRcdFx0aWYgKG5mdF90cmFuc19zZXRfdXBkYXRlKHRyYW5zKSkge1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTEtXHRcdFx0XHRuZnRfdHJhbnNfZGVzdHJveSh0cmFucyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTQtXHRcdFx0bmZ0X3VzZV9kZWNfcmVzdG9yZShcdTAwMjZ0YWJsZS1cdTAwM2V1c2UpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0MTU6XHRcdFx0aWYgKG5mdF90cmFuc19zZXRfYm91bmQodHJhbnMpKSB7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQxNi1cdFx0XHRcdG5mdF90cmFuc19kZXN0cm95KHRyYW5zKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQxOC1cdFx0XHR9XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQxOTpcdFx0XHRuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDIwOlx0XHRcdGxpc3RfZGVsX3JjdShcdTAwMjZuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDIxLVx0XHRcdGJyZWFrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDI0LVx0XHRcdG5mdF91c2VfaW5jX3Jlc3RvcmUoXHUwMDI2dGFibGUtXHUwMDNldXNlKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDI1Olx0XHRcdG5mdF9jbGVhcih0cmFucy1cdTAwM2VuZXQsIG5mdF90cmFuc19zZXQodHJhbnMpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDI2Olx0XHRcdGlmIChuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VmbGFncyBcdTAwMjYgKE5GVF9TRVRfTUFQIHwgTkZUX1NFVF9PQkpFQ1QpKVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0Mjc6XHRcdFx0XHRuZnRfbWFwX2FjdGl2YXRlKFx1MDAyNmN0eCwgbmZ0X3RyYW5zX3NldCh0cmFucykpO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MjgtXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTIyMzk9c3RhdGljIGludCBfX2luaXQgbmZfdGFibGVzX21vZHVsZV9pbml0KHZvaWQpXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIyNDUtXHRCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IG5mdF90cmFuc19ydWxlLCBuZnRfdHJhbnMpICE9IDApO1xubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTIyNDY6XHRCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IG5mdF90cmFuc19zZXQsIG5mdF90cmFuc19iaW5kaW5nLm5mdF90cmFucykgIT0gMCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMjI0Ny1cdEJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0sIG5mdF90cmFucykgIT0gMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzQKCQkJCQkJCW91dHB1dDogMTc2CgkJCQkJCQl0aG91Z2h0czogNTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBUYWJsZXMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmZ0X3NldF9jb21taXRfdXBkYXRlYCBhbmQgYF9fbmZfdGFibGVzX2Fib3J0YC4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCkluIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCB0aGUga2V5IGNoYW5nZSBpcyBhZGRpbmcgaGFuZGxpbmcgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhlIGNyaXRpY2FsIGxpbmUgaXMgYG5mdF90cmFuc19zZXQodHJhbnMpLSZndDtkZWFkID0gMTtgLiAgQWgsIHJpZ2h0LCBzbyBpdCYjMzk7cyBzZXR0aW5nIGEgYGRlYWRgIGZsYWcgb24gdGhlIGBzdHJ1Y3QgbmZ0X3NldGAuIFRoaXMgaXMgY2xhc3NpYyBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFRoaXMgYGRlYWRgIGZsYWcgaXMgdmVyeSBsaWtlbHkgYSBzdGF0ZSBmbGFnLCBwcm9iYWJseSBhaW1lZCBhdCBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIG9yIGEgZG91YmxlLWZyZWUsIG9yIHNvbWUgb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgcmVsYXRlZCB0byBhY2Nlc3NpbmcgYSBzZXQgdGhhdCYjMzk7cyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLiBNYWtlcyBzZW5zZS4gVGhpcyBpcyBnb29kLCBwcm9hY3RpdmUgY29kaW5nLgoKVGhlIG90aGVyIGNoYW5nZSBpcyByZW1vdmluZyBgTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdClgIGluIGBfX25mX3RhYmxlc19hYm9ydGAuIExvb2tzIGxpa2UgYSBkZWFkIHZhcmlhYmxlOyBjbGVhbnVwLiBObyBiaWcgZGVhbC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8uICBUaGlzIHBhdGNoICpzZXRzKiBhIGBkZWFkYCBmbGFnLiBJdCBkb2VzbiYjMzk7dCBhbGxvY2F0ZSBuZXcgbWVtb3J5IG9yIHJlYWQgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQmIzM5O3MganVzdCBtb2RpZnlpbmcgdGhlIGV4aXN0aW5nIHN0YXRlIG9mIGEgYG5mdF9zZXRgLiBUaGlzIGlzIGEgKmZpeCosIG5vdCBhIHNvdXJjZSBvZiBhIHBvdGVudGlhbCBuZXcgdnVsbmVyYWJpbGl0eS4gSXQmIzM5O3MgZml4aW5nIGEgbG9naWMgYnVnLCBhIFVBRiBvciByYWNlIGNvbmRpdGlvbiwgd2hlcmUgYSBzZXQgY291bGQgaGF2ZSBiZWVuIGFjY2Vzc2VkIGFmdGVyIGJlaW5nIGRlbGV0ZWQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY29uc2lkZXIgS01TQU4gc3BlY2lmaWNhbGx5LiAgS01TQU4gaXMgYWxsIGFib3V0IGRldGVjdGluZyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gIEJ1dCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGRvIHRoYXQuIEl0IGp1c3QgKnNldHMqIHRoZSBgZGVhZGAgZmxhZy4gIE5vIG5ldyBtZW1vcnkgaXMgYWxsb2NhdGVkLCBhbmQgbm8gbWVtb3J5IGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBJdCYjMzk7cyBqdXN0IGEgc3RhdGUgdHJhbnNpdGlvbiwgYSBmbGFnIG1vZGlmaWNhdGlvbi4gIFRoaXMgaXNuJiMzOTt0IEtNU0FOIHRlcnJpdG9yeS4gU3RhbmRhcmQgS0FTQU4sIGZvciBkZXRlY3RpbmcgYW55IFVBRiwgZXRjLiwgaXMgc3VmZmljaWVudCBoZXJlLiBUaGlzIGlzIGEgc3RhbmRhcmQgc3RhdGUgbWFuYWdlbWVudCBmaXguCgpTbywgdGhlIHN1bW1hcnkgaXMgdGhpczogVGhlIHBhdGNoIGVuaGFuY2VzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzICYjMzk7ZGVhZCYjMzk7IGR1cmluZyB0aGUgY29tbWl0IHVwZGF0ZSBmb3IgZGVsZXRpb24gKGBORlRfTVNHX0RFTFNFVGAsIGBORlRfTVNHX0RFU1RST1lTRVRgKS4gSXQgYWxzbyBjbGVhbnMgdXAgYSByZWR1bmRhbnQgdmFyaWFibGUuIFRoZXNlIGNoYW5nZXMgYm9sc3RlciBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBndWFyZCBhZ2FpbnN0IGxvZ2ljIGVycm9ycyBsaWtlIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcyBvciB1bmF1dGhvcml6ZWQgYWNjZXNzIHRvIHNldHMgc2xhdGVkIGZvciBkZWxldGlvbi4gVGhlcmUgYXJlIG5vIGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnRyb2R1Y2VkLCBhbmQgbm8gZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGlzbiYjMzk7dCBhIGNhbmRpZGF0ZSBmb3IgS01TQU4gYW5hbHlzaXMuICBTdGFuZGFyZCBLQVNBTiB3aWxsIGJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IGFueSBtZW1vcnkgY29ycnVwdGlvbiByaXNrcyByZWxhdGVkIHRvIHRoaXMgbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDEzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzIGBkZWFkYCBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgcGhhc2UgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgIG1lc3NhZ2VzLiBJdCBhbHNvIHJlbW92ZXMgYW4gdW51c2VkIGBzZXRfdXBkYXRlX2xpc3RgIHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIHN0YXRlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbG9naWMgYnVncyBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgYWNjZXNzZXMgdG8gc2V0cyB0aGF0IGFyZSBiZWluZyBkZWxldGVkLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLCBhbmQgbm8gZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGlzIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGZpbHRlciB0YWJsZXMgQVBJIHRvIG1hcmsgYSBzZXQgYXMgYGRlYWRgIGR1cmluZyB0aGUgY29tbWl0IHVwZGF0ZSBwaGFzZSBmb3IgYE5GVF9NU0dfREVMU0VUYCBhbmQgYE5GVF9NU0dfREVTVFJPWVNFVGAgbWVzc2FnZXMuIEl0IGFsc28gcmVtb3ZlcyBhbiB1bnVzZWQgYHNldF91cGRhdGVfbGlzdGAgdmFyaWFibGUuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gc3RhdGUgbWFuYWdlbWVudCBhbmQgcHJldmVudGluZyBsb2dpYyBidWdzIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBhY2Nlc3NlcyB0byBzZXRzIHRoYXQgYXJlIGJlaW5nIGRlbGV0ZWQuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQsIGFuZCBubyBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgS0FTQU4gaXMgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjA0LjE5NjQ1MjQxMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNTMyOTU3MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfdGFibGVzX2NvbW1pdFwiLFxuICAgIFwibmZfdGFibGVzX2Fib3J0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIHRhYmxlcyBBUEkgdG8gbWFyayBhIHNldCBhcyBgZGVhZGAgZHVyaW5nIHRoZSBjb21taXQgdXBkYXRlIHBoYXNlIGZvciBgTkZUX01TR19ERUxTRVRgIGFuZCBgTkZUX01TR19ERVNUUk9ZU0VUYCBtZXNzYWdlcy4gSXQgYWxzbyByZW1vdmVzIGFuIHVudXNlZCBgc2V0X3VwZGF0ZV9saXN0YCB2YXJpYWJsZS4gVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBwcmV2ZW50aW5nIGxvZ2ljIGJ1Z3Mgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIGFjY2Vzc2VzIHRvIHNldHMgdGhhdCBhcmUgYmVpbmcgZGVsZXRlZC4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgZXhwb3NlZCwgYW5kIG5vIGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiBTdGFuZGFyZCBLQVNBTiBpcyBzdWZmaWNpZW50IGZvciBkZXRlY3RpbmcgYW55IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY29kZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgbmZfdGFibGVzIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgdG8gcHJvcGVybHkgbWFyayBzZXRzIGFzIGRlYWQgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHJlbW92ZXMgYW4gdW51c2VkIGxpc3QgaGVhZCBpbiB0aGUgYWJvcnQgcGF0aC4gVGhpcyBhbHRlcnMgdGhlIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIGFib3J0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MDQuMTk2NDYxODcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDMyOTc2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhODFlNTY2YzJlZDNjNGJhNjViNTQ5NzczNTgxMzI5NjIxOWYyNjgyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDEzOjIwOjAzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcXG5pbmRleCBjMTEyZWNjNGZjYTMyLi4yMTE3MzMzZjc1YWNmIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcXG5AQCAtMTA4OTQsNiArMTA4OTQsMTAgQEAgc3RhdGljIHZvaWQgbmZ0X3NldF9jb21taXRfdXBkYXRlKHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuIFxcdFxcdG5mdF9jdHhfdXBkYXRlKGN0eCwgdHJhbnMpO1xcbiBcXG4gXFx0XFx0c3dpdGNoICh0cmFucy1cXHUwMDNlbXNnX3R5cGUpIHtcXG4rXFx0XFx0Y2FzZSBORlRfTVNHX0RFTFNFVDpcXG4rXFx0XFx0Y2FzZSBORlRfTVNHX0RFU1RST1lTRVQ6XFxuK1xcdFxcdFxcdG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VkZWFkID0gMTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxcbiBcXHRcXHRcXHR0ZSA9IG5mdF90cmFuc19jb250YWluZXJfZWxlbSh0cmFucyk7XFxuIFxcdFxcdFxcdGlmICghdGUtXFx1MDAzZXNldC1cXHUwMDNlb3BzLVxcdTAwM2Vjb21taXQpXFxuQEAgLTExMzA1LDcgKzExMzA5LDYgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxcbiB7XFxuIFxcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XFxuIFxcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zLCAqbmV4dDtcXG4tXFx0TElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7XFxuIFxcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XFxuIFxcdHN0cnVjdCBuZnRfY3R4IGN0eCA9IHtcXG4gXFx0XFx0Lm5ldCA9IG5ldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MDQuODAwNzc1MDg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjQyNjc3NTM3MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJORl9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gICAgXCJuZl90YWJsZXNfYWJvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBuZXRmaWx0ZXIgbmZfdGFibGVzIGNvbW1pdCBhbmQgYWJvcnQgbG9naWMgdG8gcHJvcGVybHkgbWFyayBzZXRzIGFzIGRlYWQgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHJlbW92ZXMgYW4gdW51c2VkIGxpc3QgaGVhZCBpbiB0aGUgYWJvcnQgcGF0aC4gVGhpcyBhbHRlcnMgdGhlIHN0YXRlIG1hbmFnZW1lbnQgb2YgbmZfdGFibGVzIHNldHMgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIGFib3J0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTgxZTU2NmMyZWQzYzRiYTY1YjU0OTc3MzU4MTMyOTYyMTlmMjY4MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDEzOjIwOjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuaW5kZXggYzExMmVjYzRmY2EzMi4uMjExNzMzM2Y3NWFjZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuQEAgLTEwODk0LDYgKzEwODk0LDEwIEBAIHN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuIFx0XHRuZnRfY3R4X3VwZGF0ZShjdHgsIHRyYW5zKTtcbiBcbiBcdFx0c3dpdGNoICh0cmFucy1cdTAwM2Vtc2dfdHlwZSkge1xuK1x0XHRjYXNlIE5GVF9NU0dfREVMU0VUOlxuK1x0XHRjYXNlIE5GVF9NU0dfREVTVFJPWVNFVDpcbitcdFx0XHRuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMTtcbitcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVEVMRU06XG4gXHRcdFx0dGUgPSBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpO1xuIFx0XHRcdGlmICghdGUtXHUwMDNlc2V0LVx1MDAzZW9wcy1cdTAwM2Vjb21taXQpXG5AQCAtMTEzMDUsNyArMTEzMDksNiBAQCBzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXG4ge1xuIFx0c3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldCA9IG5mdF9wZXJuZXQobmV0KTtcbiBcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zLCAqbmV4dDtcbi1cdExJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpO1xuIFx0c3RydWN0IG5mdF90cmFuc19lbGVtICp0ZTtcbiBcdHN0cnVjdCBuZnRfY3R4IGN0eCA9IHtcbiBcdFx0Lm5ldCA9IG5ldCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjA0LjgwMDc3NzM1NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjg0OTU4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgVGFibGVzIEFQSSBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBoaXR0aW5nIGBuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgaW4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAuIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgc29tZSBsb2dpYyB0aGVyZSB0byBoYW5kbGUgdGhlIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBzZXRzLiBMZXQgbWUgc2VlLi4uIHllcywgaXQncyBzZXR0aW5nIGBuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMWAgd2hlbiBpdCBlbmNvdW50ZXJzIGBORlRfTVNHX0RFTFNFVGAgb3IgYE5GVF9NU0dfREVTVFJPWVNFVGAuIFRoYXQgbWFrZXMgc2Vuc2UuIE1hcmtpbmcgdGhlIHNldCBhcyBcImRlYWRcIiBwcm9iYWJseSBoZWxwcyB3aXRoIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBwcmV2ZW50cyBmdXR1cmUgb3BlcmF0aW9ucyBvbiBpdCwgZWZmZWN0aXZlbHkgc2lnbmFsaW5nIGl0cyBkZW1pc2Ugd2l0aGluIHRoZSB0cmFuc2FjdGlvbi4gSSB3b25kZXIgaWYgdGhlcmUncyBhbnkgZm9sbG93LXVwIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBjbGVhbnVwIGxvZ2ljIGxpbmtlZCB0byB0aGF0IGZsYWcsIG9yIHBlcmhhcHMgZGVmZXJyZWQgY2xlYW51cC5cblxuQW5kIHRoZW4sIGl0IGxvb2tzIGxpa2UgaXQncyByZW1vdmluZyBgTElTVF9IRUFEKHNldF91cGRhdGVfbGlzdCk7YCBmcm9tIGBfX25mX3RhYmxlc19hYm9ydGAuIEhtbSwgdGhhdCdzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhhdCB3YXMgcHJlc2VudCBpbiB0aGUgZmlyc3QgcGxhY2UgYW5kIHdoeSBpdCdzIGJlaW5nIHJlbW92ZWQuIElzIHRoaXMgc29tZSBraW5kIG9mIHJlZmFjdG9yaW5nIG9yIHNpbXBsaWZpY2F0aW9uPyBNYXliZSB0aGUgbGlzdCB3YXNuJ3QgbmVlZGVkIGFueW1vcmUsIG9yIHRoZSBmdW5jdGlvbmFsaXR5IGl0IHByb3ZpZGVkIGhhcyBiZWVuIG1vdmVkIGVsc2V3aGVyZSwgcGVyaGFwcyB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIG9yIGltcHJvdmUgZWZmaWNpZW5jeS4gSSBzaG91bGQgZGlnIGRlZXBlciBpbnRvIHRoYXQgYF9fbmZfdGFibGVzX2Fib3J0YCBmdW5jdGlvbi4gSSB3aWxsIGNoZWNrIHRoZSBjb250ZXh0IG9mIGJvdGggYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGNoYW5nZXMsIGFuZCBjb25maXJtIHdoZXRoZXIgdGhlIHJlbW92YWwgaXMgc2FmZSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjA5Ljg2OTI3NTY5NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc4MzgwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfc2V0X2NvbW1pdF91cGRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA4Njg9c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODgyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODgzOnN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODg0LVxcdFxcdFxcdFxcdCAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTM3PXN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxNy1cXHQvKiBzdGVwIDIuICBNYWtlIHJ1bGVzX2dlbl9YIHZpc2libGUgdG8gcGFja2V0IHBhdGggKi9cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAxODpcXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXFx1MDAyNmN0eCwgbmZ0X25ldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjA5Ljk0NzA2NDY4M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTAxMjQzMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgemVyb2luZyBpbiBvbiBhIGNyaXRpY2FsIHNlY3Rpb24gd2l0aGluIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLiBTcGVjaWZpY2FsbHksIGl0J3MgaW50cm9kdWNpbmcgYSBjb25kaXRpb24gd2hlcmUgYG5mdF90cmFuc19zZXQodHJhbnMpLVx1MDAzZWRlYWQgPSAxO2AgZ2V0cyBzZXQgd2hlbiBgdHJhbnMtXHUwMDNlbXNnX3R5cGVgIGlzIGVpdGhlciBgTkZUX01TR19ERUxTRVRgIG9yIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGRpcmVjdCBhbHRlcmF0aW9uIG9mIGhvdyBuZXRmaWx0ZXIncyBgbmZfdGFibGVzYCBoYW5kbGVzIHNldCBkZWxldGlvbiBhbmQgZGVzdHJ1Y3Rpb24uICBNeSBzcGlkZXkgc2Vuc2UgaXMgdGluZ2xpbmc7IHRoaXMgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0LlwiIFdlIG5lZWQgdG8gcmVhbGx5IGhhbW1lciB0aGlzIHdpdGggYSBmdXp6aW5nIGNhbXBhaWduLiBUaGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgY2hhbmdlcyBkdXJpbmcgdGhvc2Ugc3BlY2lmaWMgc2V0IG9wZXJhdGlvbnMgaXMgZGVmaW5pdGVseSB0aGVyZS5cblxuQmVmb3JlIHdlIHN0YXJ0IGZ1enppbmcsIGxldCdzIHRha2UgYSBtaW51dGUgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHByZXJlcXVpc2l0ZXMuIFdlIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHdlJ3JlIHdvcmtpbmcgd2l0aCBhIHN5c3RlbSBwcm9wZXJseSBzZXQgdXAgdG8gZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguIEkgbmVlZCB0byBrbm93IHByZWNpc2VseSB3aGljaCBrZXJuZWwgY29uZmlncyBhcmUgbmVjZXNzYXJ5IHRvIGVuYWJsZSBhbGwgdGhlIHJlbGV2YW50IGZlYXR1cmVzIG9mIGBuZl90YWJsZXNgIHRoYXQgYXJlIHRpZWQgaW50byB0aGlzIGxvZ2ljLiBHb3R0YSBlbnN1cmUgd2UncmUgdGFyZ2V0aW5nIHRoZSByaWdodCBjb25maWd1cmF0aW9uLCBvciB3ZSdyZSB3YXN0aW5nIHZhbHVhYmxlIGZ1enppbmcgdGltZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk0MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjE0LjY5NzE5MTgyNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg5MDM2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX1RBQkxFU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ1Mz1lbmRpZiAjIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1NTpjb25maWcgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1Ni1cXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NzE9aWYgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDczLVxcdGRlcGVuZHMgb24gSVBWNlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3OS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDgwOmNvbmZpZyBORl9UQUJMRVNfTkVUREVWXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbmZfdGFibGVzIG5ldGRldiB0YWJsZXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MTQuODU2MTA0MDIxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMwNzQ5MzA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaXMgYE5GX1RBQkxFU2AuIFRoYXQncyB0aGUgY29uZmlnIGl0ZW0gd2UncmUgZm9jdXNpbmcgb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgKm90aGVyKiBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucyBsdXJraW5nIGFyb3VuZC4gVGhlcmUncyBhbG1vc3QgY2VydGFpbmx5IG1vcmUgdG8gdGhlIHN0b3J5IHRoYW4ganVzdCB0aGlzIHNpbmdsZSBzZXR0aW5nLiBJIG5lZWQgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IGJlZm9yZSBJIHN0YXJ0IHRvIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgaG93IGBORl9UQUJMRVNgIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIFdlIG5lZWQgdGhlIGxheSBvZiB0aGUgbGFuZCwgYXMgdGhpcyBtaWdodCBiZSB0aGUgb25seSBjb25maWcgZmlsZSBvZiBpdHMga2luZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyMSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjE5LjE2MzU5OTI2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkyMjM0ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9UQUJMRVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctNS0jXFxubmV0L2JyaWRnZS9uZXRmaWx0ZXIvS2NvbmZpZzo2Om1lbnVjb25maWcgTkZfVEFCTEVTX0JSSURHRVxcbm5ldC9icmlkZ2UvbmV0ZmlsdGVyL0tjb25maWctNy1cXHRkZXBlbmRzIG9uIEJSSURHRSBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVIgXFx1MDAyNlxcdTAwMjYgTkZfVEFCTEVTXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0zMz1pZiBORl9UQUJMRVNcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNC1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzozNTpjb25maWcgTkZfVEFCTEVTX0lQVjRcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJJUHY0IG5mX3RhYmxlcyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9NjI9ZW5kaWYgIyBORl9UQUJMRVNfSVBWNFxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTYzLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjY0OmNvbmZpZyBORl9UQUJMRVNfQVJQXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiQVJQIG5mX3RhYmxlcyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Mjk9aWYgTkZfVEFCTEVTXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzAtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MzE6Y29uZmlnIE5GX1RBQkxFU19JUFY2XFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMzItXFx0Ym9vbCBcXFwiSVB2NiBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTU6Y29uZmlnIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIElQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjIxLjQ1NTgzOTI4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTMyMDkzMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBuZl90YWJsZXMgQ29tbWl0IFVwZGF0ZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgLCBhbmQgaXQncyBkZWZpbmVkIHdpdGhpbiBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgLiBUaGlzIGlzIHBhcnQgb2YgdGhlIGBORl9UQUJMRVNgIGNvbmZpZ3VyYXRpb24sIHNvIHRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBhIGJpdC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGFuZCwgb2YgY291cnNlLCB0aGUgZnVuY3Rpb24gaXQgY2FsbHMsIGBfX25mX3RhYmxlc19hYm9ydGAuIEJ1dCB3YWl0Li4uIHRoaXMgaXMgc3RhdGljLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIGNhbGxzLCBzbyBJIG5lZWQgdG8gc2VlIGlmIGl0J3MgaW5saW5lZC4gTGV0IG1lIGNoZWNrIHRoZSBkaXNhc3NlbWJseSB0byBzZWUgaWYgdGhlIHN0YXRpYyBrZXl3b3JkIGlzIGFjdHVhbGx5IGluIHRoZSBjb21waWxlZCBvdXRwdXQsIG9yIGlmIGl0IGhhcyBiZWVuIG9wdGltaXplZCBhd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MjUuMzA5MDUzMTI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mzg4Nzk2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfc2V0X2NvbW1pdF91cGRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTA4Njg9c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9sb2coc3RydWN0IGxpc3RfaGVhZCAqYWRsLCB1MzIgZ2VuZXJhdGlvbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODgyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODgzOnN0YXRpYyB2b2lkIG5mdF9zZXRfY29tbWl0X3VwZGF0ZShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODg0LVxcdFxcdFxcdFxcdCAgc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTM3PXN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAxNy1cXHQvKiBzdGVwIDIuICBNYWtlIHJ1bGVzX2dlbl9YIHZpc2libGUgdG8gcGFja2V0IHBhdGggKi9cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAxODpcXHRuZnRfc2V0X2NvbW1pdF91cGRhdGUoXFx1MDAyNmN0eCwgbmZ0X25ldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjI1LjQwMjk0ODEyM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI0MjUzMTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGludGVybmFscyBhbmQgbmV0ZmlsdGVyOlxuXG4qKklubGluaW5nIGFuZCBTdGF0aWMgU2NvcGUgaW4gbmZfdGFibGVzX2NvbW1pdCoqXG5cbkhtbSwgdGhpcyBgbmZfdGFibGVzX2NvbW1pdGAgZnVuY3Rpb24uLi4gSXQgc2VlbXMgc3RhdGljIGFuZCwgZnJvbSB3aGF0IEkgY2FuIHNlZSwgaXMgb25seSBldmVyIGNhbGxlZCBvbmNlLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZl90YWJsZXNfY29tbWl0YCBpdHNlbGYuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgdG8gbWUgdGhhdCBpdCdzIHByaW1lIHJlYWwgZXN0YXRlIGZvciBpbmxpbmluZy4gVGhlIGNvbXBpbGVyIGlzIHByb2JhYmx5IG9wdGltaXppbmcgaXQgdGhhdCB3YXkgdG8gYXZvaWQgdGhlIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgZ2l2ZW4gaXRzIGxpbWl0ZWQgc2NvcGUuXG5cblNpbmNlIGBuZl90YWJsZXNfY29tbWl0YCBpdHNlbGYgaXMgYWxzbyBzdGF0aWMsIEknbSBnZXR0aW5nIGN1cmlvdXMgYWJvdXQgdGhlIGNhbGwgY2hhaW4gYW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gTGV0IG1lIHF1aWNrbHkgdHJhY2Ugd2hlcmUgKml0KiBpcyBjYWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhIGJpdCBiZXR0ZXIuIFRoaXMgY291bGQgcmV2ZWFsIHNvbWUgaW50ZXJlc3RpbmcgZGV0YWlscyBhYm91dCBob3cgbmV0ZmlsdGVyIHRhYmxlcyBhcmUgYWN0dWFsbHkgY29tbWl0dGVkIGFuZCBhcHBsaWVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHdpdGhpbiB0aGUgYnJvYWRlciBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3ODgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDoyOS4yMjcyMDQ1NjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzY4MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlc19jb21taXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTAzMTg9RVhQT1JUX1NZTUJPTF9HUEwobmZfdGFibGVzX3RyYW5zX2Rlc3Ryb3lfZmx1c2hfd29yayk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAzMTktXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTAzMjA6c3RhdGljIGludCBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmZ0X2NoYWluICpjaGFpbilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDMyMS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDM5NC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDM5NTpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDM5Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQxMC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQxMTpzdGF0aWMgdm9pZCBfX25mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlcyhzdHJ1Y3QgcmN1X2hlYWQgKmgpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MTctXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0MTg6c3RhdGljIHZvaWQgbmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChzdHJ1Y3QgbmZ0X3J1bGVfYmxvYiAqYmxvYilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQxOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyNS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQyNjpcXHRjYWxsX3JjdShcXHUwMDI2bGFzdC1cXHUwMDNlaCwgX19uZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDI3LX1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQyOC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQyOTpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2NoYWluKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mdF9jaGFpbiAqY2hhaW4pXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0MzAte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NTEtXFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGNoYWluLVxcdTAwM2VibG9iX2dlbl8xLCBnMCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NTI6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NTMtXFx0XFx0fSBlbHNlIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ1NC1cXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoY2hhaW4tXFx1MDAzZWJsb2JfZ2VuXzAsIGcxKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDQ1NTpcXHRcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluX2ZyZWVfcnVsZXNfb2xkKGcwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ1Ni1cXHRcXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDQ3MS1cXHRpZiAobmV4dF9nZW5iaXQpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA0NzI6XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9jaGFpbl9mcmVlX3J1bGVzX29sZChnMSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA0NzMtXFx0ZWxzZVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwNDc0OlxcdFxcdG5mX3RhYmxlc19jb21taXRfY2hhaW5fZnJlZV9ydWxlc19vbGQoZzApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNDc1LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwNzI0PXN0YXRpYyB2b2lkIG5mX3RhYmxlc19tb2R1bGVfYXV0b2xvYWRfY2xlYW51cChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDczNi1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDczNzpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X3JlbGVhc2Uoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwNzM4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwNzcxPXN0YXRpYyB2b2lkIG5mdF9jb21taXRfbm90aWZ5KHN0cnVjdCBuZXQgKm5ldCwgdTMyIHBvcnRpZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODA2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODA3OnN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9hbGxvYyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4MDgtXFx0XFx0XFx0XFx0XFx0c3RydWN0IG5mdF90YWJsZSAqdGFibGUpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDgyMy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDgyNDpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2ZyZWUoc3RydWN0IGxpc3RfaGVhZCAqYWRsKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODI1LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODM2LSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODM3OnN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfdGFibGVzX2NvbW1pdF9hdWRpdF9lbnRyeWNvdW50KGNvbnN0IHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODM4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODQ3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODQ4OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19jb21taXRfYXVkaXRfY29sbGVjdChzdHJ1Y3QgbGlzdF9oZWFkICphZGwsXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTA4NDktXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG5mdF90cmFucyAqdHJhbnMsIHUzMiBvcClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODYwLWZvdW5kOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODYxOlxcdGFkcC1cXHUwMDNlZW50cmllcyArPSBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2VudHJ5Y291bnQodHJhbnMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODYyLVxcdGlmICghYWRwLVxcdTAwM2VvcCB8fCBhZHAtXFx1MDAzZW9wIFxcdTAwM2Ugb3ApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDg2Ny1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDg2ODpzdGF0aWMgdm9pZCBuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhzdHJ1Y3QgbGlzdF9oZWFkICphZGwsIHUzMiBnZW5lcmF0aW9uKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODY5LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTMyPXN0YXRpYyB2b2lkIG5mdF9nY19zZXFfZW5kKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQsIHVuc2lnbmVkIGludCBnY19zZXEpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkzNi1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMDkzNzpzdGF0aWMgaW50IG5mX3RhYmxlc19jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTM4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTk3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTk4OlxcdFxcdHJldCA9IG5mX3RhYmxlc19jb21taXRfYXVkaXRfYWxsb2MoXFx1MDAyNmFkbCwgdGFibGUpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwOTk5LVxcdFxcdGlmIChyZXQpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwMDpcXHRcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKG5ldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEwMDE6XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKFxcdTAwMjZhZGwpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDAyLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAwNy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAwODpcXHRcXHRcXHRyZXQgPSBuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmUobmV0LCBjaGFpbik7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEwMDktXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAxMDpcXHRcXHRcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluX3ByZXBhcmVfY2FuY2VsKG5ldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEwMTE6XFx0XFx0XFx0XFx0bmZfdGFibGVzX2NvbW1pdF9hdWRpdF9mcmVlKFxcdTAwMjZhZGwpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDEyLVxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTAyMS1cXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoYWluLCBcXHUwMDI2dGFibGUtXFx1MDAzZWNoYWlucywgbGlzdClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTAyMjpcXHRcXHRcXHRuZl90YWJsZXNfY29tbWl0X2NoYWluKG5ldCwgY2hhaW4pO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDIzLVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMDQ1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMDQ2OlxcdFxcdG5mX3RhYmxlc19jb21taXRfYXVkaXRfY29sbGVjdChcXHUwMDI2YWRsLCB0cmFucywgdHJhbnMtXFx1MDAzZW1zZ190eXBlKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTA0Ny1cXHRcXHRzd2l0Y2ggKHRyYW5zLVxcdTAwM2Vtc2dfdHlwZSkge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzAtXFx0bmZfdGFibGVzX2dlbl9ub3RpZnkobmV0LCBza2IsIE5GVF9NU0dfTkVXR0VOKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTIzMTpcXHRuZl90YWJsZXNfY29tbWl0X2F1ZGl0X2xvZyhcXHUwMDI2YWRsLCBuZnRfYmFzZV9zZXEobmV0KSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEyMzItXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTIzNC1cXHRuZnRfbmV0LVxcdTAwM2V2YWxpZGF0ZV9zdGF0ZSA9IE5GVF9WQUxJREFURV9TS0lQO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMjM1OlxcdG5mX3RhYmxlc19jb21taXRfcmVsZWFzZShuZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjM2LVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTE1NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5ldGxpbmtfc3Vic3lzdGVtIG5mX3RhYmxlc19zdWJzeXMgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU1OS1cXHQuY2JcXHRcXHQ9IG5mX3RhYmxlc19jYixcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU2MDpcXHQuY29tbWl0XFx0XFx0PSBuZl90YWJsZXNfY29tbWl0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTYxLVxcdC5hYm9ydFxcdFxcdD0gbmZfdGFibGVzX2Fib3J0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDoyOS4yODU1ODA1MTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5MDg2MDAyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBUYWJsZXMgQ29tbWl0IENhbGxiYWNrKipcblxuT2theSwgc28gYG5mX3RhYmxlc19jb21taXRgIGlzIHRoZSBjcml0aWNhbCBjb21taXQgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBgbmZfdGFibGVzX3N1YnN5c2AsIGdvdCBpdC4gQW5kIGBfX25mX3RhYmxlc19hYm9ydGAgaXMgY2FsbGVkIGJ5IGBuZl90YWJsZXNfYWJvcnRgLiBUaGVzZSBhcmUgYm90aCByZWFjaGFibGUgZnVuY3Rpb25zLCBzbyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhleSdyZSBkZWZpbml0ZWx5IHRhcmdldHMuIFdlIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byB0aGVzZSwgYW5kIEknbGwgZm9jdXMgb24gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgX19uZl90YWJsZXNfYWJvcnRgLiBIbW0sIHdhaXQgYSBtaW51dGUsIGBfX25mX3RhYmxlc19hYm9ydGAgaXMgc3RhdGljPyBUaGF0IG1lYW5zIGl0J3MgbGlrZWx5IG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQgaXQncyBkZWZpbmVkIGluLiBOZWVkIHRvIGNoZWNrIGlmIGl0J3MgaW5saW5lZC4gU3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gb3B0aW1pemVkIGF3YXkgYW5kIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBXZSBuZWVkIHRvIGNoZWNrIHRoZSBhc3NlbWJseSBvciBnZW5lcmF0ZWQgY29kZSB0byBzZWUgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY2NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjMyLjk3NjQ0MzczN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1MjgwNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19uZl90YWJsZXNfYWJvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTEyOTQ9c3RhdGljIHZvaWQgbmZ0X3NldF9hYm9ydF91cGRhdGUoc3RydWN0IG5mdGFibGVzX3Blcm5ldCAqbmZ0X25ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMzA3LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMzA4OnN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTMwOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTUwNj1zdGF0aWMgaW50IG5mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTUxMy1cXHRnY19zZXEgPSBuZnRfZ2Nfc2VxX2JlZ2luKG5mdF9uZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNTE0OlxcdHJldCA9IF9fbmZfdGFibGVzX2Fib3J0KG5ldCwgYWN0aW9uKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTUxNS1cXHRuZnRfZ2Nfc2VxX2VuZChuZnRfbmV0LCBnY19zZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDozMy4wNTU5NzYxMTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2MjA0Mjg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMaW5lIG9mIElucXVpcnk6IEFib3J0aW5nIE5ldGZpbHRlciBUYWJsZXMqKlxuXG5Pa2F5LCBzbyBgX19uZl90YWJsZXNfYWJvcnRgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgbmZfdGFibGVzX2Fib3J0YC4gUmlnaHQsIGBuZl90YWJsZXNfYWJvcnRgIGZ1bmN0aW9ucyBhcyB0aGUgYWJvcnQgY2FsbGJhY2sgZm9yIHRoZSBgbmZfdGFibGVzX3N1YnN5c2AuIFNvLCBzdHJhdGVnaWNhbGx5LCBJIGNhbiB6ZXJvIGluIG9uIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXMgbXkga2V5IGZvY3VzIHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGhlcmUuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQgbWUganVzdCBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQWgsIHllcywgYE5GX1RBQkxFU2AgaXRzZWxmIGlzIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24uIEhhbmcgb24uLi4gYE5GX1RBQkxFU2AgKmRlcGVuZHMqIG9uIGBORVRGSUxURVJgLiBSaWdodCwgZ290IGl0LiBCZXR0ZXIgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYE5FVEZJTFRFUmAgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNzQsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6MzYuOTE4MDIyNzM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mjc0NDA0NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTI9bWVudSBcXFwiQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1OmNvbmZpZyBORVRGSUxURVJfSU5HUkVTU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy02LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBpbmdyZXNzIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzOmNvbmZpZyBORVRGSUxURVJfRUdSRVNTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBlZ3Jlc3Mgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjE6Y29uZmlnIE5FVEZJTFRFUl9TS0lQX0VHUkVTU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMi1cXHRkZWZfYm9vbCBORVRGSUxURVJfRUdSRVNTIFxcdTAwMjZcXHUwMDI2IChORVRfQ0xTX0FDVCB8fCBJRkIpXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNDpjb25maWcgTkVURklMVEVSX05FVExJTktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjUtXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc6Y29uZmlnIE5FVEZJTFRFUl9GQU1JTFlfQlJJREdFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI4LVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjMwOmNvbmZpZyBORVRGSUxURVJfRkFNSUxZX0FSUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMS1cXHRib29sXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMzpjb25maWcgTkVURklMVEVSX0JQRl9MSU5LXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0LVxcdGRlZl9ib29sIEJQRl9TWVNDQUxMXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjpjb25maWcgTkVURklMVEVSX05FVExJTktfSE9PS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGJhc2UgaG9vayBkdW1wIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ2OmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19BQ0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZBQ0NUIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01My1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NTQ6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX1FVRVVFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTU1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgTkZRVUVVRSBvdmVyIE5GTkVUTElOSyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjYyOmNvbmZpZyBORVRGSUxURVJfTkVUTElOS19MT0dcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNjMtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBMT0cgb3ZlciBORk5FVExJTksgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NDpjb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgT1NGIG92ZXIgTkZORVRMSU5LIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTA9aWYgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMTpjb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zODU9Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzk3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozOTg6Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzk5LVxcdGJvb2wgXFxcIk5GUVVFVUUgYW5kIE5GTE9HIGludGVncmF0aW9uIHdpdGggQ29ubmVjdGlvbiBUcmFja2luZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NDc9Y29uZmlnIE5GX05BVF9PVlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ1MDpjb25maWcgTkVURklMVEVSX1NZTlBST1hZXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ1MS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTcyMT1jb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjcyOTpjb25maWcgTkVURklMVEVSX1hUQUJMRVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzMwLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgWHRhYmxlcyBzdXBwb3J0IChyZXF1aXJlZCBmb3IgaXBfdGFibGVzKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MzY9aWYgTkVURklMVEVSX1hUQUJMRVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzM3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3Mzg6Y29uZmlnIE5FVEZJTFRFUl9YVEFCTEVTX0NPTVBBVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MzktXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIFh0YWJsZXMgMzJiaXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjc0Nzpjb25maWcgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc0OC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgbGVnYWN5IHRhYmxlcyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTc1Nz1jb21tZW50IFxcXCJYdGFibGVzIGNvbWJpbmVkIG1vZHVsZXNcXFwiXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTc1OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzU5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NjAtXFx0dHJpc3RhdGUgJ25mbWFyayB0YXJnZXQgYW5kIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzcyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3NzM6Y29uZmlnIE5FVEZJTFRFUl9YVF9DT05OTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03NzQtXFx0dHJpc3RhdGUgJ2N0bWFyayB0YXJnZXQgYW5kIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzg0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3ODU6Y29uZmlnIE5FVEZJTFRFUl9YVF9TRVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzg2LVxcdHRyaXN0YXRlICdzZXQgdGFyZ2V0IGFuZCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTc5OT1jb21tZW50IFxcXCJYdGFibGVzIHRhcmdldHNcXFwiXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgwMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODAxOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0FVRElUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgwMi1cXHR0cmlzdGF0ZSBcXFwiQVVESVQgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4MTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ0hFQ0tTVU1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEyLVxcdHRyaXN0YXRlIFxcXCJDSEVDS1NVTSB0YXJnZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MjYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyNzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MjgtXFx0dHJpc3RhdGUgJ1xcXCJDTEFTU0lGWVxcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODM4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mzk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODQwLVxcdHRyaXN0YXRlICAnXFxcIkNPTk5NQVJLXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NDgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjg0OTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DT05OU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NTAtXFx0dHJpc3RhdGUgJ1xcXCJDT05OU0VDTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODYwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4NjE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODYyLVxcdHRyaXN0YXRlICdcXFwiQ1RcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg3Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODczOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0RTQ1BcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODc0LVxcdHRyaXN0YXRlICdcXFwiRFNDUFxcXCIgYW5kIFxcXCJUT1NcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg4OC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODg5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0hMXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg5MC1cXHR0cmlzdGF0ZSAnXFxcIkhMXFxcIiBob3BsaW1pdCB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjkwNDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9ITUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MDUtXFx0dHJpc3RhdGUgJ1xcXCJITUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTE3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5MTg6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfSURMRVRJTUVSXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTkxOS1cXHR0cmlzdGF0ZSAgXFxcIklETEVUSU1FUiB0YXJnZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05MjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjkzMDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9MRURcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTMxLVxcdHRyaXN0YXRlICdcXFwiTEVEXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjk1NDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9MT0dcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTU1LVxcdHRyaXN0YXRlIFxcXCJMT0cgdGFyZ2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTY0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5NjU6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NjYtXFx0dHJpc3RhdGUgJ1xcXCJNQVJLXFxcIiB0YXJnZXQgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NzMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjk3NDpjb25maWcgTkVURklMVEVSX1hUX05BVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy05NzUtXFx0dHJpc3RhdGUgJ1xcXCJTTkFUIGFuZCBETkFUXFxcIiB0YXJnZXRzIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTgxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5ODI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkVUTUFQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTk4My1cXHR0cmlzdGF0ZSAnXFxcIk5FVE1BUFxcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTkxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo5OTI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkZMT0dcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctOTkzLVxcdHRyaXN0YXRlICdcXFwiTkZMT0dcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMDEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMDI6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfTkZRVUVVRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDAzLVxcdHRyaXN0YXRlICdcXFwiTkZRVUVVRVxcXCIgdGFyZ2V0IFN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAxMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTAxNDpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9OT1RSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMTUtXFx0dHJpc3RhdGUgICdcXFwiTk9UUkFDS1xcXCIgdGFyZ2V0IHN1cHBvcnQgKERFUFJFQ0FURUQpJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwMjAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEwMjE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfUkFURUVTVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDIyLVxcdHRyaXN0YXRlICdcXFwiUkFURUVTVFxcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTAzMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTAzMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9SRURJUkVDVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDMyLVxcdHRyaXN0YXRlIFxcXCJSRURJUkVDVCB0YXJnZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDQyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDQzOmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX01BU1FVRVJBREVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTA0NC1cXHR0cmlzdGF0ZSBcXFwiTUFTUVVFUkFERSB0YXJnZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDU2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDU3OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RFRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDU4LVxcdHRyaXN0YXRlICdcXFwiVEVFXFxcIiAtIHBhY2tldCBjbG9uaW5nIHRvIGFsdGVybmF0ZSBkZXN0aW5hdGlvbidcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDY3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDY4OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RQUk9YWVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDY5LVxcdHRyaXN0YXRlICdcXFwiVFBST1hZXFxcIiB0YXJnZXQgdHJhbnNwYXJlbnQgcHJveHlpbmcgc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMDg4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMDg5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX1RSQUNFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEwOTAtXFx0dHJpc3RhdGUgICdcXFwiVFJBQ0VcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMDAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjExMDE6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTAyLVxcdHRyaXN0YXRlICdcXFwiU0VDTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTExMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTExMTpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BNU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTExMi1cXHR0cmlzdGF0ZSAnXFxcIlRDUE1TU1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEzNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTEzNzpjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9UQ1BPUFRTVFJJUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTM4LVxcdHRyaXN0YXRlICdcXFwiVENQT1BUU1RSSVBcXFwiIHRhcmdldCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTExNDc9Y29tbWVudCBcXFwiWHRhYmxlcyBtYXRjaGVzXFxcIlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTQ4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTQ5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQUREUlRZUEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE1MC1cXHR0cmlzdGF0ZSAnXFxcImFkZHJ0eXBlXFxcIiBhZGRyZXNzIHR5cGUgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTU4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTU5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQlBGXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExNjAtXFx0dHJpc3RhdGUgJ1xcXCJicGZcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTE2Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE2ODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NHUk9VUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTY5LVxcdHRyaXN0YXRlICdcXFwiY29udHJvbCBncm91cFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTc3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTc4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ0xVU1RFUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTc5LVxcdHRyaXN0YXRlICdcXFwiY2x1c3RlclxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTkzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTk0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTk1LVxcdHRyaXN0YXRlICAnXFxcImNvbW1lbnRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIwMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIwNDpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5CWVRFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjA1LVxcdHRyaXN0YXRlICAnXFxcImNvbm5ieXRlc1xcXCIgcGVyLWNvbm5lY3Rpb24gY291bnRlciBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTEFCRUxcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIxNi1cXHR0cmlzdGF0ZSAnXFxcImNvbm5sYWJlbFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjI4OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMjktXFx0dHJpc3RhdGUgJ1xcXCJjb25ubGltaXRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIzNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5NQVJLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzgtXFx0dHJpc3RhdGUgICdcXFwiY29ubm1hcmtcXFwiIGNvbm5lY3Rpb24gbWFyayBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNDYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNDc6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI0OC1cXHR0cmlzdGF0ZSAnXFxcImNvbm50cmFja1xcXCIgY29ubmVjdGlvbiB0cmFja2luZyBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNTktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyNjA6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DUFVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI2MS1cXHR0cmlzdGF0ZSAnXFxcImNwdVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjY4LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjY5OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRENDUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjcwLVxcdHRyaXN0YXRlICdcXFwiZGNjcFxcXCIgcHJvdG9jb2wgbWF0Y2ggc3VwcG9ydCAoREVQUkVDQVRFRCknXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTI4MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTI4MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0RFVkdST1VQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyODItXFx0dHJpc3RhdGUgJ1xcXCJkZXZncm91cFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjg5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjkwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfRFNDUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjkxLVxcdHRyaXN0YXRlICdcXFwiZHNjcFxcXCIgYW5kIFxcXCJ0b3NcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMwNC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMwNTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0VDTlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzA2LVxcdHRyaXN0YXRlICdcXFwiZWNuXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzMTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9FU1BcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMxNS1cXHR0cmlzdGF0ZSAnXFxcImVzcFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzIyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzIzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSEFTSExJTUlUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzMjQtXFx0dHJpc3RhdGUgJ1xcXCJoYXNobGltaXRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTMzNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTMzODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0hFTFBFUlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzM5LVxcdHRyaXN0YXRlICdcXFwiaGVscGVyXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNDctXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNDg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9ITFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzQ5LVxcdHRyaXN0YXRlICdcXFwiaGxcXFwiIGhvcGxpbWl0L1RUTCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNTY6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9JUENPTVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM1Ny1cXHR0cmlzdGF0ZSAnXFxcImlwY29tcFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzY0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMzY1OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfSVBSQU5HRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzY2LVxcdHRyaXN0YXRlICdcXFwiaXByYW5nZVxcXCIgYWRkcmVzcyByYW5nZSBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNzQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzNzU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9JUFZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNzYtXFx0dHJpc3RhdGUgJ1xcXCJpcHZzXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzODQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzODU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9MMlRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzODYtXFx0dHJpc3RhdGUgJ1xcXCJsMnRwXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzOTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEzOTU6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9MRU5HVEhcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM5Ni1cXHR0cmlzdGF0ZSAnXFxcImxlbmd0aFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDAzLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDA0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfTElNSVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQwNS1cXHR0cmlzdGF0ZSAnXFxcImxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MTMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MTQ6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQxNS1cXHR0cmlzdGF0ZSAnXFxcIm1hY1xcXCIgYWRkcmVzcyBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NQVJLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MjQtXFx0dHJpc3RhdGUgJ1xcXCJtYXJrXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0MzEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0MzI6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9NVUxUSVBPUlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQzMy1cXHR0cmlzdGF0ZSAnXFxcIm11bHRpcG9ydFxcXCIgTXVsdGlwbGUgcG9ydCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NDEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE0NDI6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9ORkFDQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ0My1cXHR0cmlzdGF0ZSAnXFxcIm5mYWNjdFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDUxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDUyOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfT1NGXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NTMtXFx0dHJpc3RhdGUgJ1xcXCJvc2ZcXFwiIFBhc3NpdmUgT1MgZmluZ2VycHJpbnQgbWF0Y2gnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ2NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ2Njpjb25maWcgTkVURklMVEVSX1hUX01BVENIX09XTkVSXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NjctXFx0dHJpc3RhdGUgJ1xcXCJvd25lclxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNDc0OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUE9MSUNZXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0NzUtXFx0dHJpc3RhdGUgJ0lQc2VjIFxcXCJwb2xpY3lcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ4NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BIWVNERVZcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ4Ni1cXHR0cmlzdGF0ZSAnXFxcInBoeXNkZXZcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ5NTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5Ni1cXHR0cmlzdGF0ZSAnXFxcInBrdHR5cGVcXFwiIHBhY2tldCB0eXBlIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUwNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUwNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1FVT1RBXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MDgtXFx0dHJpc3RhdGUgJ1xcXCJxdW90YVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTE2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTE3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTE4LVxcdHRyaXN0YXRlICdcXFwicmF0ZWVzdFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTI3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkVBTE1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUyOC1cXHR0cmlzdGF0ZSAgJ1xcXCJyZWFsbVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTQwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTQxOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkVDRU5UXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NDItXFx0dHJpc3RhdGUgJ1xcXCJyZWNlbnRcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU1MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU1MTpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU1Mi1cXHR0cmlzdGF0ZSAgJ1xcXCJzY3RwXFxcIiBwcm90b2NvbCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1NjItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1NjM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TT0NLRVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU2NC1cXHR0cmlzdGF0ZSAnXFxcInNvY2tldFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTc5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNTgwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4MS1cXHR0cmlzdGF0ZSAnXFxcInN0YXRlXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1OTAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1OTE6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9TVEFUSVNUSUNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU5Mi1cXHR0cmlzdGF0ZSAnXFxcInN0YXRpc3RpY1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTk5LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjAwOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MDEtXFx0dHJpc3RhdGUgICdcXFwic3RyaW5nXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MTItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE2MTM6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9UQ1BNU1NcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYxNC1cXHR0cmlzdGF0ZSAnXFxcInRjcG1zc1xcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjIyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjIzOmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVElNRVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjI0LVxcdHRyaXN0YXRlICdcXFwidGltZVxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjM2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MzgtXFx0dHJpc3RhdGUgJ1xcXCJ1MzJcXFwiIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjM3LjQ0NTQ2ODM3OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkyMTYyODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gaGVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgYE5FVEZJTFRFUmAgaXMgdGhlIGNlbnRyYWwgcGllY2UsIG9idmlvdXNseS4gVGhhdCBhbHNvIG1lYW5zIGBORl9UQUJMRVNgIGlzIGNyaXRpY2FsIGluIGFsbCB0aGlzLiBOb3csIEkgd2FudCB0byB0cmFjZSB0aGUgY29tbWl0L2Fib3J0IGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIEknbGwgY2hlY2sgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jYC4gSG1tLCByaWdodC4uLiBgbmZfdGFibGVzX2NvbW1pdGAgaXMgc3RhdGljLiBUaGF0IHVzdWFsbHkgbWVhbnMgaXQncyBsb2NhbGl6ZWQsIGEgaGVscGVyIHdpdGhpbiBpdHMgb3duIHNjb3BlLiBPa2F5LCB0aGUgbmV4dCB0aGluZyBpcyB0byBkZXRlcm1pbmUgd2hvJ3MgY2FsbGluZyBpdD8gSXMgdGhlcmUgYSBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGlzPyBBaGEhIEhlcmUgd2UgZ28sIGBuZl90YWJsZXNfY29tbWl0YCBpcyBjYWxsZWQgYnkgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGluIGBuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jYC4gVGhhdCdzIHRoZSBsaW5rIEkgd2FzIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDcwMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDo0Mi4xMzc2MzUwNDJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNjY1NTg4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl90YWJsZXNfY29tbWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjQyLjIwMDMxMzU3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjEyNTQwOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgSW50ZXJuYWxzOiBBIFF1aWNrIE9ic2VydmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMganVzdCB0cmFjaW5nIHRocm91Z2ggdGhlIG5ldGZpbHRlciBjb2RlLCBhbmQgSSBuZWVkIHRvIHJlY2FsaWJyYXRlIG15IG1lbnRhbCBtb2RlbCBmb3IgYSBtb21lbnQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgdGhlIHJlZ2lzdHJhdGlvbiBvZiBgbmZfdGFibGVzX2NvbW1pdGAgd2FzIGhhcHBlbmluZyBlbHNld2hlcmUsIGJ1dCBoYW5nIG9uLi4uIGxvb2tpbmcgYXQgdGhlIGNvZGUgbm93LCBJIHNlZSBpdCdzIGFjdHVhbGx5IHJlZ2lzdGVyZWQgZGlyZWN0bHkgd2l0aGluIHRoZSBgbmZfdGFibGVzX3N1YnN5c2Agc3RydWN0dXJlLiBUaGlzIGxpa2VseSBhZmZlY3RzIGhvdyBpdCBpcyBhY3RpdmF0ZWQgLSBJIG5lZWQgdG8gYWRqdXN0IG15IG1lbnRhbCBwYXRoIGZyb20gaG93IHRoaXMgaXMgY2FsbGVkLiBJIGhhZCBhc3N1bWVkIHNvbWUga2luZCBvZiBpbmRpcmVjdCByZWdpc3RyYXRpb24sIHBlcmhhcHMgdHJpZ2dlcmVkIGJ5IGEgbW9kdWxlIGxvYWQuIENsZWFybHksIHRoYXQgaXMgbm90IHRoZSBjYXNlLiBUaGlzIGRpcmVjdCByZWdpc3RyYXRpb24gbGlrZWx5IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSB0aW1pbmcgYW5kIGxpZmVjeWNsZSBkZXBlbmRlbmNpZXMuIFRoYXQncyBnb29kIHRvIGtlZXAgaW4gbWluZCwgYW5kIG1pZ2h0IGltcGFjdCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcmFjdGlvbnMgd2hlbiBkZWJ1Z2dpbmcgdGhpcyBhcmVhIGFnYWluIGluIHRoZSBmdXR1cmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSB0aGlua2luZyBvZiB0aGlzIGNvcnJlY3RseSB3aGVuIEkgZXhhbWluZSB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGUgbmV4dCB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA3NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjQ2LjMyMTU3MTQ1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE3MjAyNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfdGFibGVzX3N1YnN5c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTUzOT1zdGF0aWMgYm9vbCBuZl90YWJsZXNfdmFsaWRfZ2VuaWQoc3RydWN0IG5ldCAqbmV0LCB1MzIgZ2VuaWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU1NC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU1NTpzdGF0aWMgY29uc3Qgc3RydWN0IG5mbmV0bGlua19zdWJzeXN0ZW0gbmZfdGFibGVzX3N1YnN5cyA9IHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU1Ni1cXHQubmFtZVxcdFxcdD0gXFxcIm5mX3RhYmxlc1xcXCIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMjIzOT1zdGF0aWMgaW50IF9faW5pdCBuZl90YWJsZXNfbW9kdWxlX2luaXQodm9pZClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMjc1LVxcdC8qIG11c3QgYmUgbGFzdCAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEyMjc2OlxcdGVyciA9IG5mbmV0bGlua19zdWJzeXNfcmVnaXN0ZXIoXFx1MDAyNm5mX3RhYmxlc19zdWJzeXMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMjc3LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9MTIyOTk9c3RhdGljIHZvaWQgX19leGl0IG5mX3RhYmxlc19tb2R1bGVfZXhpdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMzAwLXtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMjMwMTpcXHRuZm5ldGxpbmtfc3Vic3lzX3VucmVnaXN0ZXIoXFx1MDAyNm5mX3RhYmxlc19zdWJzeXMpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEyMzAyLVxcdG5ldGxpbmtfdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bmZ0X25sX25vdGlmaWVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6NDYuMzgzMzEyNzVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAzNTM0Mjk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aXZlIFRob3VnaHQgUHJvY2VzcyoqXG5cbkFscmlnaHQsIHNvIHRoZSBjbHVlIGxlYWRzIG1lIHRvIGBuZm5ldGxpbmtfc3Vic3lzYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgYWxsIGNvbm5lY3RlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuIE15IHByaW1hcnkgdGFyZ2V0IGlzIHRvIHVuZGVyc3RhbmQgd2hlcmUgYGNvbW1pdGAgaXMgY2FsbGVkLiBUaGF0J3MgdGhlIGtleSB0byB0cmFjaW5nIHRoZSBsb2dpYyBmbG93IGhlcmUuIEknbGwgb3BlbiB1cCBgbmZuZXRsaW5rLmNgIGFuZCBzdGFydCBteSBzZWFyY2guIExldCdzIHNlZSB3aGF0IHRoZSBzb3VyY2UgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc1NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIwOjQ5LjQxODY2MDEzNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3NjkzMjE1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJcXFxcLmNvbW1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDo0OS41NTYzNjQwNDFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MDcxMjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgZXhwcmVzc2VkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBuZm5ldGxpbmtfc3Vic3lzIENvbW1pdCBDYWxsYmFjayoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIEknbSBmb2N1c2luZyBvbiB0aGUgYGNvbW1pdGAgY2FsbGJhY2sgd2l0aGluIHRoZSBgbmZuZXRsaW5rX3N1YnN5c2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjYWxsYmFjayBhbmQgaG93IGl0IGZ1bmN0aW9ucyB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb250ZXh0LiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGl0IGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIFRoaXMgYGNvbW1pdGAgZnVuY3Rpb24gaXMgbGlrZWx5IHRoZSBjcnVjaWFsIHBvaW50IHdoZXJlIGNoYW5nZXMgYXJlIGZpbmFsaXplZCwgb3IgcGVyaGFwcyB3aGVuIHRyYW5zYWN0aW9ucyBhcmUgY29tcGxldGVkLiBXaGF0IGFyZSB0aGUgc3BlY2lmaWMgb3BlcmF0aW9ucyB0aGF0IGFyZSB0aWVkIGludG8gdGhpcz8gV2hhdCB0eXBlcyBvZiBkYXRhIG9yIGV2ZW50cyB0cmlnZ2VyIHRoaXMgY2FsbGJhY2s/IFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyByZWxlYXNlZCBvciBjb21taXR0ZWQgd2l0aGluPyBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGl0cyBpbXBsZW1lbnRhdGlvbiB0byBkZXRlcm1pbmUgaXRzIGV4YWN0IGJlaGF2aW9yIHdpdGhpbiBOZXRmaWx0ZXIncyBicm9hZGVyIGZyYW1ld29yay4gSXMgaXQgaGFuZGxpbmcgbWVtb3J5IGFsbG9jYXRpb24/IElzIGl0IGNvb3JkaW5hdGluZyB3aXRoIG90aGVyIE5ldGZpbHRlciBjb21wb25lbnRzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5MzEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMDo1My40MzcwODIwMjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0ODMzMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbW1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM9MzY5PXN0YXRpYyB2b2lkIG5mbmV0bGlua19yY3ZfYmF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTQwOC1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jOjQwOTpcXHRpZiAoIXNzLVxcdTAwM2V2YWxpZF9nZW5pZCB8fCAhc3MtXFx1MDAzZWNvbW1pdCB8fCAhc3MtXFx1MDAzZWFib3J0KSB7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmsuYy00MTAtXFx0XFx0bmZubF91bmxvY2soc3Vic3lzX2lkKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMtNTczLVxcdH0gZWxzZSBpZiAoc3RhdHVzID09IE5GTkxfQkFUQ0hfRE9ORSkge1xcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmM6NTc0OlxcdFxcdGVyciA9IHNzLVxcdTAwM2Vjb21taXQobmV0LCBvc2tiKTtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jLTU3NS1cXHRcXHRpZiAoZXJyID09IC1FQUdBSU4pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjA6NTMuNTMxOTIzMzE4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0OTEzNDQ1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgbmZfdGFibGVzIENvbW1pdC9BYm9ydCBMb2dpYyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgYG5mbmV0bGlua19yY3ZfYmF0Y2hgIGNhbGxzLCBgc3MtXHUwMDNlY29tbWl0KG5ldCwgb3NrYilgIGFuZCBgc3MtXHUwMDNlYWJvcnQobmV0LCBvc2tiLCBORk5MX0FCT1JUX05PTkUpYCBhcmUgZGVmaW5pdGVseSB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4gVGhhdCBtZWFucyBgbmZfdGFibGVzX2NvbW1pdGAgYW5kIGBuZl90YWJsZXNfYWJvcnRgIGFyZSB0aGUgcmVsZXZhbnQgc3ltYm9scywgd2hpY2ggc2VlbXMgcmlnaHQsIGdpdmVuIHRoZSBjb250ZXh0LlxuXG5XYWl0IGEgc2Vjb25kLi4uIGFyZW4ndCB0aG9zZSBzdGF0aWM/IEhtbSwgYXJlIHRoZXkgaW5saW5lZD8gTm8sIHRoZXkncmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiBgbmZfdGFibGVzX3N1YnN5c2AsIHNvIHRoZXkgKmNhbid0KiBiZSBpbmxpbmVkLiBUaGF0IG1lYW5zIHRoZXkgd2lsbCBoYXZlIGRpc3RpbmN0LCBpZGVudGlmaWFibGUgc3ltYm9sIGFkZHJlc3Nlcywgd2hpY2ggaXMgZ3JlYXQgZm9yIG91ciBhbmFseXNpcy5cblxuTGV0J3MgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQuIGBuZnRfc2V0X2NvbW1pdF91cGRhdGVgIGlzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgd2l0aGluIGBuZl90YWJsZXNfY29tbWl0YC4gSXQgKm1pZ2h0KiBiZSBpbmxpbmVkLCBzbyBpdCdzIGxlc3Mgb2YgYSBmb2N1cy4gU2ltaWxhcmx5LCBgX19uZl90YWJsZXNfYWJvcnRgIGlzIHN0YXRpYyBhbmQgb25seSBjYWxsZWQgd2l0aGluIGBuZl90YWJsZXNfYWJvcnRgLiBBZ2FpbiwgcG9zc2libGUgaW5saW5pbmcuIFNvLCB5ZXMsIGBuZl90YWJsZXNfY29tbWl0YCBhbmQgYG5mX3RhYmxlc19hYm9ydGAgYXJlIGRlZmluaXRlbHkgdGhlIGJlc3QgZm9jdXMgcG9pbnRzLlxuXG5Ob3csIGxldCdzIHpvb20gYmFjayBpbiBvbiB0aGUgcGF0Y2ggaXRzZWxmLiBPa2F5LCB0aGUgcGF0Y2gncyBjaGFuZ2VzIGFyZSBpbnNpZGUgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAsIGp1c3QgYXMgZXhwZWN0ZWQuIFRoZSBnb2FsIGhlcmUgaXMgdG8gY29ycmVjdGx5IG1hcmsgc2V0cyBhcyAnZGVhZCcgZHVyaW5nIGRlbGV0aW9uIGFuZCBkZXN0cnVjdGlvbiwgYW5kIHRoZXJlIGlzIGFsc28gYW4gdW51c2VkIGxpc3QgaGVhZCBiZWluZyByZW1vdmVkIGZyb20gdGhlIGFib3J0IHBhdGgsIGJhc2VkIG9uIHRoZSByZWFzb25pbmcgZ2l2ZW4uIFRoZSBlZmZlY3Qgb2YgdGhlIGNoYW5nZSBpcyB0byBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50IG9mIG5mX3RhYmxlcyBzZXRzIGR1cmluZyB0cmFuc2FjdGlvbiBjb21taXRzLlxuXG5BbHJpZ2h0LCB0aGF0J3Mgd2hhdCBJIG5lZWRlZC4gV2l0aCBgTkVURklMVEVSYCBhbmQgYE5GX1RBQkxFU2AgY29uZmlndXJlZCwgYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCBhcmUgZGVmaW5pdGVseSB0aGUgcmlnaHQgc3ltYm9scyB0byBpbnNwZWN0IGZ1cnRoZXIuIExldCdzIG1ha2Ugc3VyZSB0aGUgbmFtaW5nIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzkxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIxOjAzLjAyMzI3MTAzM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxODM1ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX3RhYmxlc19hYm9ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTI0MD1zdGF0aWMgdm9pZCBuZl90YWJsZXNfbW9kdWxlX2F1dG9sb2FkKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjU1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMjU2OnN0YXRpYyB2b2lkIG5mX3RhYmxlc19hYm9ydF9yZWxlYXNlKHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjU3LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExMjk0PXN0YXRpYyB2b2lkIG5mdF9zZXRfYWJvcnRfdXBkYXRlKHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTMwNy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTMwODpzdGF0aWMgaW50IF9fbmZfdGFibGVzX2Fib3J0KHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZm5sX2Fib3J0X2FjdGlvbiBhY3Rpb24pXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTEzMDkte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0OTktXFx0XFx0bmZ0X3RyYW5zX2xpc3RfZGVsKHRyYW5zKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTUwMDpcXHRcXHRuZl90YWJsZXNfYWJvcnRfcmVsZWFzZSh0cmFucyk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MDEtXFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MDUtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE1MDY6c3RhdGljIGludCBuZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNTA3LVxcdFxcdFxcdCAgIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MTMtXFx0Z2Nfc2VxID0gbmZ0X2djX3NlcV9iZWdpbihuZnRfbmV0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTUxNDpcXHRyZXQgPSBfX25mX3RhYmxlc19hYm9ydChuZXQsIGFjdGlvbik7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1MTUtXFx0bmZ0X2djX3NlcV9lbmQobmZ0X25ldCwgZ2Nfc2VxKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExNTU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZuZXRsaW5rX3N1YnN5c3RlbSBuZl90YWJsZXNfc3Vic3lzID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE1NjAtXFx0LmNvbW1pdFxcdFxcdD0gbmZfdGFibGVzX2NvbW1pdCxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTU2MTpcXHQuYWJvcnRcXHRcXHQ9IG5mX3RhYmxlc19hYm9ydCxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTU2Mi1cXHQudmFsaWRfZ2VuaWRcXHQ9IG5mX3RhYmxlc192YWxpZF9nZW5pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjE6MDMuMTY1MTEyNjM4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3OTQ3MjAyODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbmZfdGFibGVzIFBhdGNoKipcblxuT2theSwgc28gYG5mX3RhYmxlc19hYm9ydGAgKmlzKiB0aGUga2V5IGZ1bmN0aW9uIHdlJ3JlIGxvb2tpbmcgYXQsIHRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBpbnN0aW5jdC4gTm93LCBsZXQncyBqdXN0IGRvIGEgcXVpY2sgY2hlY2sgdG8gbWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbGwgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGNvdmVyZWQuIGBORl9UQUJMRVNgIGlzIHRoZSBvYnZpb3VzIG9uZSwgaXQncyB0aGUgY29yZSBvZiB0aGlzLiBgTkVURklMVEVSYCBpcyBlc3NlbnRpYWwgYXMgd2VsbCwgb2YgY291cnNlLCB0aGUgdW5kZXJseWluZyBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBMZXQgbWUgc2VlLi4uIG9oLCBgTkVURklMVEVSX05FVExJTktgIGlzIGF1dG9tYXRpY2FsbHkgcHVsbGVkIGluIGJ5IGBORl9UQUJMRVNgLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIGl0LiBGaW5lLCBgTkZfVEFCTEVTYCBhbG9uZSB3b3VsZCBwcm9iYWJseSBzdWZmaWNlLCBidXQgaXQncyBnb29kIHByYWN0aWNlIHRvIGFsc28gaW5jbHVkZSBgTkVURklMVEVSYCBmb3IgZ29vZCBtZWFzdXJlLCBqdXN0IGluIGNhc2UuXG5cbkFscmlnaHQsIHRpbWUgdG8gcHJlcGFyZSB0aGUgb3V0cHV0LiBUaGUgZnV6emluZyBmbGFnLCBgV29ydGhGdXp6aW5nYCwgaXMgZGVmaW5pdGVseSB0cnVlIGhlcmUsIGFic29sdXRlbHkuIFRoZSByZWFzb25pbmcgaXMgc29saWQ6IFRoaXMgcGF0Y2gncyBwcmltYXJ5IGZ1bmN0aW9uIGlzIHRvIGNvcnJlY3QgaG93IHNldHMgYXJlIG1hcmtlZCBpbiB0aGUgbmV0ZmlsdGVyIG5mX3RhYmxlcyBkZWxldGlvbi9kZXN0cnVjdGlvbiwgYW5kIGhvdyB0aGlzIGlzIGFwcGxpZWQgZHVyaW5nIHRyYW5zYWN0aW9ucy4gSXQgYWxzbyByZW1vdmVzIGEgdXNlbGVzcyBsaXN0IGhlYWQuIFRoaXMgY2hhbmdlcyB0aGUgd2F5IHRoYXQgbmZfdGFibGVzIHNldHMgYXJlIG1hbmFnZWQgZHVyaW5nIHRyYW5zYWN0aW9uIGNvbW1pdHMuIEknbSBnb2luZyB0byBzZXQgYEZvY3VzU3ltYm9sc2AgdG8gYG5mX3RhYmxlc19jb21taXRgIGFuZCBgbmZfdGFibGVzX2Fib3J0YCBzaW5jZSB0aGUgY2hhbmdlcyBmb2N1cyBvbiB0aGVtLiBGaW5hbGx5LCBiYXNlZCBvbiBvdXIgaW52ZXN0aWdhdGlvbiwgdGhlIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYE5FVEZJTFRFUmAgYW5kIGBORl9UQUJMRVNgLiBUaGF0IHNlZW1zIGNvbXBsZXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE5MywiT3V0cHV0VG9rZW5zIjoxMDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjE6MDguOTU5ODM2MzE4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4Njg5MTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIk5GX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX3RhYmxlc19jb21taXRcIixcbiAgICBcIm5mX3RhYmxlc19hYm9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG5ldGZpbHRlciBuZl90YWJsZXMgY29tbWl0IGFuZCBhYm9ydCBsb2dpYyB0byBwcm9wZXJseSBtYXJrIHNldHMgYXMgZGVhZCBkdXJpbmcgZGVsZXRpb24gYW5kIGRlc3RydWN0aW9uLCBhbmQgcmVtb3ZlcyBhbiB1bnVzZWQgbGlzdCBoZWFkIGluIHRoZSBhYm9ydCBwYXRoLiBUaGlzIGFsdGVycyB0aGUgc3RhdGUgbWFuYWdlbWVudCBvZiBuZl90YWJsZXMgc2V0cyBkdXJpbmcgdHJhbnNhY3Rpb24gY29tbWl0cyBhbmQgYWJvcnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiTkZfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfdGFibGVzX2NvbW1pdFwiLFxuICAgIFwibmZfdGFibGVzX2Fib3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbmV0ZmlsdGVyIG5mX3RhYmxlcyBjb21taXQgYW5kIGFib3J0IGxvZ2ljIHRvIHByb3Blcmx5IG1hcmsgc2V0cyBhcyBkZWFkIGR1cmluZyBkZWxldGlvbiBhbmQgZGVzdHJ1Y3Rpb24sIGFuZCByZW1vdmVzIGFuIHVudXNlZCBsaXN0IGhlYWQgaW4gdGhlIGFib3J0IHBhdGguIFRoaXMgYWx0ZXJzIHRoZSBzdGF0ZSBtYW5hZ2VtZW50IG9mIG5mX3RhYmxlcyBzZXRzIGR1cmluZyB0cmFuc2FjdGlvbiBjb21taXRzIGFuZCBhYm9ydHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIxOjA5LjA2ODUzMjk2NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NjA4NjE1NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMTowOS4wNjkwNjY4OTVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTU2NjAzMjEyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzIGBkZWFkYCBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgcGhhc2UgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgIG1lc3NhZ2VzLiBJdCBhbHNvIHJlbW92ZXMgYW4gdW51c2VkIGBzZXRfdXBkYXRlX2xpc3RgIHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIHN0YXRlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbG9naWMgYnVncyBzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgYWNjZXNzZXMgdG8gc2V0cyB0aGF0IGFyZSBiZWluZyBkZWxldGVkLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkLCBhbmQgbm8gZGF0YSBiZWluZyBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGlzIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBhbnkgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE4MWU1NjZjMmVkM2M0YmE2NWI1NDk3NzM1ODEzMjk2MjE5ZjI2ODJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAyMSAxMzoyMDowMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGMxMTJlY2M0ZmNhMzIuLjIxMTczMzNmNzVhY2YgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC0xMDg5NCw2ICsxMDg5NCwxMCBAQCBzdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcbiBcdFx0bmZ0X2N0eF91cGRhdGUoY3R4LCB0cmFucyk7XG4gXG4gXHRcdHN3aXRjaCAodHJhbnMtXHUwMDNlbXNnX3R5cGUpIHtcbitcdFx0Y2FzZSBORlRfTVNHX0RFTFNFVDpcbitcdFx0Y2FzZSBORlRfTVNHX0RFU1RST1lTRVQ6XG4rXHRcdFx0bmZ0X3RyYW5zX3NldCh0cmFucyktXHUwMDNlZGVhZCA9IDE7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTkZUX01TR19ERUxTRVRFTEVNOlxuIFx0XHRcdHRlID0gbmZ0X3RyYW5zX2NvbnRhaW5lcl9lbGVtKHRyYW5zKTtcbiBcdFx0XHRpZiAoIXRlLVx1MDAzZXNldC1cdTAwM2VvcHMtXHUwMDNlY29tbWl0KVxuQEAgLTExMzA1LDcgKzExMzA5LDYgQEAgc3RhdGljIGludCBfX25mX3RhYmxlc19hYm9ydChzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZubF9hYm9ydF9hY3Rpb24gYWN0aW9uKVxuIHtcbiBcdHN0cnVjdCBuZnRhYmxlc19wZXJuZXQgKm5mdF9uZXQgPSBuZnRfcGVybmV0KG5ldCk7XG4gXHRzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucywgKm5leHQ7XG4tXHRMSVNUX0hFQUQoc2V0X3VwZGF0ZV9saXN0KTtcbiBcdHN0cnVjdCBuZnRfdHJhbnNfZWxlbSAqdGU7XG4gXHRzdHJ1Y3QgbmZ0X2N0eCBjdHggPSB7XG4gXHRcdC5uZXQgPSBuZXQsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxMzoyMTowOS4wNjkwNjc4MjVaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3ODE4NjQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXRmaWx0ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNgLiBSaWdodCBhd2F5LCBJIHNlZSBpdCdzIG1vZGlmeWluZyBgbmZ0X3NldF9jb21taXRfdXBkYXRlYC4gU3BlY2lmaWNhbGx5LCBpdCdzIGludHJvZHVjaW5nIHNvbWUgaGFuZGxpbmcgZm9yIGBORlRfTVNHX0RFTFNFVGAgYW5kIGBORlRfTVNHX0RFU1RST1lTRVRgLiAgVGhlIGtleSBsaW5lIHRoYXQganVtcHMgb3V0IGlzIGBuZnRfdHJhbnNfc2V0KHRyYW5zKS1cdTAwM2VkZWFkID0gMTtgLiAgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGAtXHUwMDNlZGVhZCA9IDE7YC4gV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0IGRvZXMgdGhpcyBmbGFnIGRvPyBJcyB0aGlzIGFib3V0IG1hcmt0aW5nIHRoZSBgbmZ0X3NldGAgYXMgZGVhZCB3aGVuIGRlbGV0aW5nIG9yIGRlc3Ryb3lpbmcgaXQ/XG5cbkJ1dCBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgbmZ0X3RyYW5zX3NldCh0cmFucylgIGFjdHVhbGx5ICpyZXR1cm5zKi4gIElzIGl0IGEgYHN0cnVjdCBuZnRfc2V0ICpgLCBvciBzb21ldGhpbmcgcmVsYXRlZCB0byBpdD8gSSBzaG91bGQgY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYG5mdF90cmFuc19zZXRgIHRvIGJlIGNlcnRhaW4uIENvbnRleHQgaXMga2V5IGhlcmU7IGl0IGRpY3RhdGVzIHRoZSBpbXBsaWNhdGlvbnMgb2YgYC1cdTAwM2VkZWFkID0gMTtgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjE6MTQuMjQ3MjU2OTc0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkyNDg2MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X3RyYW5zX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0yMjU9c3RhdGljIHZvaWQgX19uZnRfc2V0X3RyYW5zX2JpbmQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9zZXQgKnNldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTIzOC1cXHRcXHRjYXNlIE5GVF9NU0dfTkVXU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjIzOTpcXHRcXHRcXHRpZiAobmZ0X3RyYW5zX3NldCh0cmFucykgPT0gc2V0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjI0MDpcXHRcXHRcXHRcXHRuZnRfdHJhbnNfc2V0X2JvdW5kKHRyYW5zKSA9IGJpbmQ7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMjQxLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9NTY1PXN0YXRpYyB2b2lkIG5mdF90cmFuc19jb21taXRfbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTY4LVxcdHN0cnVjdCBuZnRfdHJhbnNfYmluZGluZyAqYmluZGluZztcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo1Njk6XFx0c3RydWN0IG5mdF90cmFuc19zZXQgKnRyYW5zX3NldDtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01NzAtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01ODAtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTgxOlxcdFxcdGlmICghbmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NTgyOlxcdFxcdCAgICBuZnRfc2V0X2lzX2Fub255bW91cyhuZnRfdHJhbnNfc2V0KHRyYW5zKSkpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTgzLVxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmJpbmRpbmctXFx1MDAzZWJpbmRpbmdfbGlzdCwgXFx1MDAyNm5mdF9uZXQtXFx1MDAzZWJpbmRpbmdfbGlzdCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz03ODM9c3RhdGljIGludCBuZnRfZGVscnVsZV9ieV9jaGFpbihzdHJ1Y3QgbmZ0X2N0eCAqY3R4KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNzk4LVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjc5OTpzdGF0aWMgaW50IF9fbmZ0X3RyYW5zX3NldF9hZGQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgaW50IG1zZ190eXBlLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwMC1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5mdF9zZXQgKnNldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwMi17XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODAzOlxcdHN0cnVjdCBuZnRfdHJhbnNfc2V0ICp0cmFuc19zZXQ7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODA0LVxcdHN0cnVjdCBuZnRfdHJhbnMgKnRyYW5zO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgwNS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MDY6XFx0dHJhbnMgPSBuZnRfdHJhbnNfYWxsb2MoY3R4LCBtc2dfdHlwZSwgc2l6ZW9mKHN0cnVjdCBuZnRfdHJhbnNfc2V0KSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODA3LVxcdGlmICh0cmFucyA9PSBOVUxMKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODE0LVxcdGlmIChtc2dfdHlwZSA9PSBORlRfTVNHX05FV1NFVCBcXHUwMDI2XFx1MDAyNiBjdHgtXFx1MDAzZW5sYVtORlRBX1NFVF9JRF0gXFx1MDAyNlxcdTAwMjYgIWRlc2MpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MTU6XFx0XFx0bmZ0X3RyYW5zX3NldF9pZCh0cmFucykgPVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgxNi1cXHRcXHRcXHRudG9obChubGFfZ2V0X2JlMzIoY3R4LVxcdTAwM2VubGFbTkZUQV9TRVRfSURdKSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MTgtXFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgxOTpcXHRuZnRfdHJhbnNfc2V0KHRyYW5zKSA9IHNldDtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MjAtXFx0aWYgKGRlc2MpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjE6XFx0XFx0bmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpID0gdHJ1ZTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjI6XFx0XFx0bmZ0X3RyYW5zX3NldF9nY19pbnQodHJhbnMpID0gZGVzYy1cXHUwMDNlZ2NfaW50O1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgyMzpcXHRcXHRuZnRfdHJhbnNfc2V0X3RpbWVvdXQodHJhbnMpID0gZGVzYy1cXHUwMDNldGltZW91dDtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MjQ6XFx0XFx0bmZ0X3RyYW5zX3NldF9zaXplKHRyYW5zKSA9IGRlc2MtXFx1MDAzZXNpemU7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODI1LVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzMC1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo4MzE6c3RhdGljIGludCBuZnRfdHJhbnNfc2V0X2FkZChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBpbnQgbXNnX3R5cGUsXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtODMyLVxcdFxcdFxcdCAgICAgc3RydWN0IG5mdF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04MzMte1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjgzNDpcXHRyZXR1cm4gX19uZnRfdHJhbnNfc2V0X2FkZChjdHgsIG1zZ190eXBlLCBzZXQsIE5VTEwpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTgzNS19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz04OTU9c3RhdGljIGludCBuZnRfZGVsc2V0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfc2V0ICpzZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy04OTgtXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6ODk5OlxcdGVyciA9IG5mdF90cmFuc19zZXRfYWRkKGN0eCwgTkZUX01TR19ERUxTRVQsIHNldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtOTAwLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9NDgxMj1zdGF0aWMgc3RydWN0IG5mdF9zZXQgKm5mdF9zZXRfbG9va3VwX2J5aWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNDgxNy1cXHR1MzIgaWQgPSBudG9obChubGFfZ2V0X2JlMzIobmxhKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6NDgxODpcXHRzdHJ1Y3QgbmZ0X3RyYW5zX3NldCAqdHJhbnM7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNDgxOS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTU0MzY9c3RhdGljIGludCBuZl90YWJsZXNfbmV3c2V0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy01NjMyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjU2MzM6XFx0XFx0cmV0dXJuIF9fbmZ0X3RyYW5zX3NldF9hZGQoXFx1MDAyNmN0eCwgTkZUX01TR19ORVdTRVQsIHNldCwgXFx1MDAyNmRlc2MpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTU2MzQtXFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNTcxNy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzo1NzE4OlxcdGVyciA9IG5mdF90cmFuc19zZXRfYWRkKFxcdTAwMjZjdHgsIE5GVF9NU0dfTkVXU0VULCBzZXQpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTU3MTktXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz02ODc0PXZvaWQgbmZ0X3NldF9lbGVtX2Rlc3Ryb3koY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTY4ODYtLyogRHJvcCByZWZlcmVuY2VzIGFuZCBkZXN0cm95LiBDYWxsZWQgZnJvbSBhYm9ydCBwYXRoLiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjY4ODc6c3RhdGljIHZvaWQgbmZ0X3RyYW5zX3NldF9lbGVtX2Rlc3Ryb3koY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF90cmFuc19lbGVtICp0ZSlcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy02ODg4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwMjQwPXN0YXRpYyB2b2lkIG5mdF9jb21taXRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwMjY3LVxcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwMjY4OlxcdFxcdG5mdF9zZXRfZGVzdHJveShcXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTAyNjktXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMDg4Mz1zdGF0aWMgdm9pZCBuZnRfc2V0X2NvbW1pdF91cGRhdGUoc3RydWN0IG5mdF9jdHggKmN0eCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTEwODk4LVxcdFxcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwODk5OlxcdFxcdFxcdG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VkZWFkID0gMTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDkwMC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEwOTM3PXN0YXRpYyBpbnQgbmZfdGFibGVzX2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk2MS1cXHRcXHRjYXNlIE5GVF9NU0dfTkVXU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTYyOlxcdFxcdFxcdGlmICghbmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTA5NjM6XFx0XFx0XFx0ICAgIG5mdF9zZXRfaXNfYW5vbnltb3VzKG5mdF90cmFuc19zZXQodHJhbnMpKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjEwOTY0OlxcdFxcdFxcdCAgICAhbmZ0X3RyYW5zX3NldF9ib3VuZCh0cmFucykpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMDk2NS1cXHRcXHRcXHRcXHRwcl93YXJuX29uY2UoXFxcIm5mdGFibGVzIHJ1bGVzZXQgd2l0aCB1bmJvdW5kIHNldFxcXFxuXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyMC1cXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2bmZ0X3RyYW5zX2NvbnRhaW5lcl9zZXQodHJhbnMpLVxcdTAwM2VsaXN0X3RyYW5zX25ld3NldCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjE6XFx0XFx0XFx0aWYgKG5mdF90cmFuc19zZXRfdXBkYXRlKHRyYW5zKSkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTIyOlxcdFxcdFxcdFxcdHN0cnVjdCBuZnRfc2V0ICpzZXQgPSBuZnRfdHJhbnNfc2V0KHRyYW5zKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyMy1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEyNDpcXHRcXHRcXHRcXHRXUklURV9PTkNFKHNldC1cXHUwMDNldGltZW91dCwgbmZ0X3RyYW5zX3NldF90aW1lb3V0KHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTExMjU6XFx0XFx0XFx0XFx0V1JJVEVfT05DRShzZXQtXFx1MDAzZWdjX2ludCwgbmZ0X3RyYW5zX3NldF9nY19pbnQodHJhbnMpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEyNi1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEyNzpcXHRcXHRcXHRcXHRpZiAobmZ0X3RyYW5zX3NldF9zaXplKHRyYW5zKSlcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEyODpcXHRcXHRcXHRcXHRcXHRXUklURV9PTkNFKHNldC1cXHUwMDNlc2l6ZSwgbmZ0X3RyYW5zX3NldF9zaXplKHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMjktXFx0XFx0XFx0fSBlbHNlIHtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzMDpcXHRcXHRcXHRcXHRuZnRfY2xlYXIobmV0LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMzEtXFx0XFx0XFx0XFx0LyogVGhpcyBhdm9pZHMgaGl0dGluZyAtRUJVU1kgd2hlbiBkZWxldGluZyB0aGUgdGFibGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTMzLVxcdFxcdFxcdFxcdCAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTM0OlxcdFxcdFxcdFxcdGlmIChuZnRfc2V0X2lzX2Fub255bW91cyhuZnRfdHJhbnNfc2V0KHRyYW5zKSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzNTpcXHRcXHRcXHRcXHQgICAgIWxpc3RfZW1wdHkoXFx1MDAyNm5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2ViaW5kaW5ncykpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTExMzYtXFx0XFx0XFx0XFx0XFx0bmZ0X3VzZV9kZWMoXFx1MDAyNnRhYmxlLVxcdTAwM2V1c2UpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTM3LVxcdFxcdFxcdH1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTEzODpcXHRcXHRcXHRuZl90YWJsZXNfc2V0X25vdGlmeShcXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTEzOS1cXHRcXHRcXHRcXHRcXHQgICAgIE5GVF9NU0dfTkVXU0VULCBHRlBfS0VSTkVMKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMTQzLVxcdFxcdGNhc2UgTkZUX01TR19ERVNUUk9ZU0VUOlxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExMTQ0OlxcdFxcdFxcdG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VkZWFkID0gMTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTE0NTpcXHRcXHRcXHRsaXN0X2RlbF9yY3UoXFx1MDAyNm5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTE0NjpcXHRcXHRcXHRuZl90YWJsZXNfc2V0X25vdGlmeShcXHUwMDI2Y3R4LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSxcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTE0Ny1cXHRcXHRcXHRcXHRcXHQgICAgIHRyYW5zLVxcdTAwM2Vtc2dfdHlwZSwgR0ZQX0tFUk5FTCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYz0xMTI1Nj1zdGF0aWMgdm9pZCBuZl90YWJsZXNfYWJvcnRfcmVsZWFzZShzdHJ1Y3QgbmZ0X3RyYW5zICp0cmFucylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExMjc1LVxcdGNhc2UgTkZUX01TR19ORVdTRVQ6XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTEyNzY6XFx0XFx0bmZ0X3NldF9kZXN0cm95KFxcdTAwMjZjdHgsIG5mdF90cmFuc19zZXQodHJhbnMpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI3Ny1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI3OC1cXHRjYXNlIE5GVF9NU0dfTkVXU0VURUxFTTpcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTI3OTpcXHRcXHRuZnRfdHJhbnNfc2V0X2VsZW1fZGVzdHJveShcXHUwMDI2Y3R4LCBuZnRfdHJhbnNfY29udGFpbmVyX2VsZW0odHJhbnMpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTI4MC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTExMzA4PXN0YXRpYyBpbnQgX19uZl90YWJsZXNfYWJvcnQoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mbmxfYWJvcnRfYWN0aW9uIGFjdGlvbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDA5LVxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZuZnRfdHJhbnNfY29udGFpbmVyX3NldCh0cmFucyktXFx1MDAzZWxpc3RfdHJhbnNfbmV3c2V0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQxMDpcXHRcXHRcXHRpZiAobmZ0X3RyYW5zX3NldF91cGRhdGUodHJhbnMpKSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTEtXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTQtXFx0XFx0XFx0bmZ0X3VzZV9kZWNfcmVzdG9yZShcXHUwMDI2dGFibGUtXFx1MDAzZXVzZSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0MTU6XFx0XFx0XFx0aWYgKG5mdF90cmFuc19zZXRfYm91bmQodHJhbnMpKSB7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTYtXFx0XFx0XFx0XFx0bmZ0X3RyYW5zX2Rlc3Ryb3kodHJhbnMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTE0MTgtXFx0XFx0XFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDE5OlxcdFxcdFxcdG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VkZWFkID0gMTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQyMDpcXHRcXHRcXHRsaXN0X2RlbF9yY3UoXFx1MDAyNm5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQyMS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTExNDI0LVxcdFxcdFxcdG5mdF91c2VfaW5jX3Jlc3RvcmUoXFx1MDAyNnRhYmxlLVxcdTAwM2V1c2UpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjExNDI1OlxcdFxcdFxcdG5mdF9jbGVhcih0cmFucy1cXHUwMDNlbmV0LCBuZnRfdHJhbnNfc2V0KHRyYW5zKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM6MTE0MjY6XFx0XFx0XFx0aWYgKG5mdF90cmFuc19zZXQodHJhbnMpLVxcdTAwM2VmbGFncyBcXHUwMDI2IChORlRfU0VUX01BUCB8IE5GVF9TRVRfT0JKRUNUKSlcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMTQyNzpcXHRcXHRcXHRcXHRuZnRfbWFwX2FjdGl2YXRlKFxcdTAwMjZjdHgsIG5mdF90cmFuc19zZXQodHJhbnMpKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy0xMTQyOC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTEyMjM5PXN0YXRpYyBpbnQgX19pbml0IG5mX3RhYmxlc19tb2R1bGVfaW5pdCh2b2lkKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIyNDUtXFx0QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBuZnRfdHJhbnNfcnVsZSwgbmZ0X3RyYW5zKSAhPSAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYzoxMjI0NjpcXHRCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IG5mdF90cmFuc19zZXQsIG5mdF90cmFuc19iaW5kaW5nLm5mdF90cmFucykgIT0gMCk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtMTIyNDctXFx0QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBuZnRfdHJhbnNfZWxlbSwgbmZ0X3RyYW5zKSAhPSAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTM6MjE6MTQuMzU2NTEwODhaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzNzI4NDg2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIFRhYmxlcyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAgYW5kIGBfX25mX3RhYmxlc19hYm9ydGAuIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuSW4gYG5mdF9zZXRfY29tbWl0X3VwZGF0ZWAsIHRoZSBrZXkgY2hhbmdlIGlzIGFkZGluZyBoYW5kbGluZyBmb3IgYE5GVF9NU0dfREVMU0VUYCBhbmQgYE5GVF9NU0dfREVTVFJPWVNFVGAuICBUaGUgY3JpdGljYWwgbGluZSBpcyBgbmZ0X3RyYW5zX3NldCh0cmFucyktXHUwMDNlZGVhZCA9IDE7YC4gIEFoLCByaWdodCwgc28gaXQncyBzZXR0aW5nIGEgYGRlYWRgIGZsYWcgb24gdGhlIGBzdHJ1Y3QgbmZ0X3NldGAuIFRoaXMgaXMgY2xhc3NpYyBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFRoaXMgYGRlYWRgIGZsYWcgaXMgdmVyeSBsaWtlbHkgYSBzdGF0ZSBmbGFnLCBwcm9iYWJseSBhaW1lZCBhdCBwcmV2ZW50aW5nIHVzZS1hZnRlci1mcmVlIG9yIGEgZG91YmxlLWZyZWUsIG9yIHNvbWUgb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgcmVsYXRlZCB0byBhY2Nlc3NpbmcgYSBzZXQgdGhhdCdzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlbGV0ZWQuIE1ha2VzIHNlbnNlLiBUaGlzIGlzIGdvb2QsIHByb2FjdGl2ZSBjb2RpbmcuXG5cblRoZSBvdGhlciBjaGFuZ2UgaXMgcmVtb3ZpbmcgYExJU1RfSEVBRChzZXRfdXBkYXRlX2xpc3QpYCBpbiBgX19uZl90YWJsZXNfYWJvcnRgLiBMb29rcyBsaWtlIGEgZGVhZCB2YXJpYWJsZTsgY2xlYW51cC4gTm8gYmlnIGRlYWwuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTm8uICBUaGlzIHBhdGNoICpzZXRzKiBhIGBkZWFkYCBmbGFnLiBJdCBkb2Vzbid0IGFsbG9jYXRlIG5ldyBtZW1vcnkgb3IgcmVhZCBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCdzIGp1c3QgbW9kaWZ5aW5nIHRoZSBleGlzdGluZyBzdGF0ZSBvZiBhIGBuZnRfc2V0YC4gVGhpcyBpcyBhICpmaXgqLCBub3QgYSBzb3VyY2Ugb2YgYSBwb3RlbnRpYWwgbmV3IHZ1bG5lcmFiaWxpdHkuIEl0J3MgZml4aW5nIGEgbG9naWMgYnVnLCBhIFVBRiBvciByYWNlIGNvbmRpdGlvbiwgd2hlcmUgYSBzZXQgY291bGQgaGF2ZSBiZWVuIGFjY2Vzc2VkIGFmdGVyIGJlaW5nIGRlbGV0ZWQuXG5cbkFscmlnaHQsIGxldCdzIGNvbnNpZGVyIEtNU0FOIHNwZWNpZmljYWxseS4gIEtNU0FOIGlzIGFsbCBhYm91dCBkZXRlY3RpbmcgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuICBCdXQgdGhpcyBwYXRjaCBkb2Vzbid0IGRvIHRoYXQuIEl0IGp1c3QgKnNldHMqIHRoZSBgZGVhZGAgZmxhZy4gIE5vIG5ldyBtZW1vcnkgaXMgYWxsb2NhdGVkLCBhbmQgbm8gbWVtb3J5IGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLiBJdCdzIGp1c3QgYSBzdGF0ZSB0cmFuc2l0aW9uLCBhIGZsYWcgbW9kaWZpY2F0aW9uLiAgVGhpcyBpc24ndCBLTVNBTiB0ZXJyaXRvcnkuIFN0YW5kYXJkIEtBU0FOLCBmb3IgZGV0ZWN0aW5nIGFueSBVQUYsIGV0Yy4sIGlzIHN1ZmZpY2llbnQgaGVyZS4gVGhpcyBpcyBhIHN0YW5kYXJkIHN0YXRlIG1hbmFnZW1lbnQgZml4LlxuXG5TbywgdGhlIHN1bW1hcnkgaXMgdGhpczogVGhlIHBhdGNoIGVuaGFuY2VzIHRoZSBuZXRmaWx0ZXIgdGFibGVzIEFQSSB0byBtYXJrIGEgc2V0IGFzICdkZWFkJyBkdXJpbmcgdGhlIGNvbW1pdCB1cGRhdGUgZm9yIGRlbGV0aW9uIChgTkZUX01TR19ERUxTRVRgLCBgTkZUX01TR19ERVNUUk9ZU0VUYCkuIEl0IGFsc28gY2xlYW5zIHVwIGEgcmVkdW5kYW50IHZhcmlhYmxlLiBUaGVzZSBjaGFuZ2VzIGJvbHN0ZXIgc3RhdGUgbWFuYWdlbWVudCBhbmQgZ3VhcmQgYWdhaW5zdCBsb2dpYyBlcnJvcnMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3Mgb3IgdW5hdXRob3JpemVkIGFjY2VzcyB0byBzZXRzIHNsYXRlZCBmb3IgZGVsZXRpb24uIFRoZXJlIGFyZSBubyBhbGxvY2F0aW9ucywgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaW50cm9kdWNlZCwgYW5kIG5vIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpc24ndCBhIGNhbmRpZGF0ZSBmb3IgS01TQU4gYW5hbHlzaXMuICBTdGFuZGFyZCBLQVNBTiB3aWxsIGJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IGFueSBtZW1vcnkgY29ycnVwdGlvbiByaXNrcyByZWxhdGVkIHRvIHRoaXMgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NzQsIk91dHB1dFRva2VucyI6MTc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDEzOjIxOjI0LjcyOTM2MzcyN1oiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGZpbHRlciB0YWJsZXMgQVBJIHRvIG1hcmsgYSBzZXQgYXMgYGRlYWRgIGR1cmluZyB0aGUgY29tbWl0IHVwZGF0ZSBwaGFzZSBmb3IgYE5GVF9NU0dfREVMU0VUYCBhbmQgYE5GVF9NU0dfREVTVFJPWVNFVGAgbWVzc2FnZXMuIEl0IGFsc28gcmVtb3ZlcyBhbiB1bnVzZWQgYHNldF91cGRhdGVfbGlzdGAgdmFyaWFibGUuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gc3RhdGUgbWFuYWdlbWVudCBhbmQgcHJldmVudGluZyBsb2dpYyBidWdzIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBhY2Nlc3NlcyB0byBzZXRzIHRoYXQgYXJlIGJlaW5nIGRlbGV0ZWQuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQsIGFuZCBubyBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgS0FTQU4gaXMgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGZpbHRlciB0YWJsZXMgQVBJIHRvIG1hcmsgYSBzZXQgYXMgYGRlYWRgIGR1cmluZyB0aGUgY29tbWl0IHVwZGF0ZSBwaGFzZSBmb3IgYE5GVF9NU0dfREVMU0VUYCBhbmQgYE5GVF9NU0dfREVTVFJPWVNFVGAgbWVzc2FnZXMuIEl0IGFsc28gcmVtb3ZlcyBhbiB1bnVzZWQgYHNldF91cGRhdGVfbGlzdGAgdmFyaWFibGUuIFRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gc3RhdGUgbWFuYWdlbWVudCBhbmQgcHJldmVudGluZyBsb2dpYyBidWdzIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBhY2Nlc3NlcyB0byBzZXRzIHRoYXQgYXJlIGJlaW5nIGRlbGV0ZWQuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQsIGFuZCBubyBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4gU3RhbmRhcmQgS0FTQU4gaXMgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIGFueSBtZW1vcnkgY29ycnVwdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNvZGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[1] Phase: Succeeded StartedAt: 2026-08-21 13:21:36 +0000 UTC FinishedAt: 2026-08-21 13:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-21 13:21:36 +0000 UTC FinishedAt: 2026-08-21 13:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2] Phase: Succeeded StartedAt: 2026-08-21 13:21:36 +0000 UTC FinishedAt: 2026-08-21 17:08:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-21 13:21:36 +0000 UTC FinishedAt: 2026-08-21 17:08:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-21 13:21:36 +0000 UTC FinishedAt: 2026-08-21 13:21:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-21 13:21:36 +0000 UTC FinishedAt: 2026-08-21 13:21:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-convert-artifact-2850502364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-21 13:21:46 +0000 UTC FinishedAt: 2026-08-21 13:42:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-21 13:21:46 +0000 UTC FinishedAt: 2026-08-21 13:42:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d6d314c9-f496-449f-bec5-ec49ae062839,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-convert-artifact-2850502364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a238461c-0a5b-4da3-b9cb-00cfbbd452b9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-4172900874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-21 13:21:46 +0000 UTC FinishedAt: 2026-08-21 13:42:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d6d314c9-f496-449f-bec5-ec49ae062839,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-convert-artifact-2850502364/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a238461c-0a5b-4da3-b9cb-00cfbbd452b9", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-4172900874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-21 13:42:27 +0000 UTC FinishedAt: 2026-08-21 13:42:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-21 13:42:27 +0000 UTC FinishedAt: 2026-08-21 13:42:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-21 13:42:27 +0000 UTC FinishedAt: 2026-08-21 13:42:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-21 13:42:27 +0000 UTC FinishedAt: 2026-08-21 13:42:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-convert-artifact-336743195/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-21 13:42:37 +0000 UTC FinishedAt: 2026-08-21 13:44:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-21 13:42:37 +0000 UTC FinishedAt: 2026-08-21 13:44:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a238461c-0a5b-4da3-b9cb-00cfbbd452b9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-4172900874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-21 13:44:38 +0000 UTC FinishedAt: 2026-08-21 13:44:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-21 13:44:38 +0000 UTC FinishedAt: 2026-08-21 13:44:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-21 13:44:38 +0000 UTC FinishedAt: 2026-08-21 14:01:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-21 13:44:38 +0000 UTC FinishedAt: 2026-08-21 14:01:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d6d314c9-f496-449f-bec5-ec49ae062839,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-convert-artifact-336743195/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "26fbc177-f096-4e7c-a796-7b33d88c890f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-1986115263/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-21 13:44:38 +0000 UTC FinishedAt: 2026-08-21 14:01:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d6d314c9-f496-449f-bec5-ec49ae062839,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-convert-artifact-336743195/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "26fbc177-f096-4e7c-a796-7b33d88c890f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-1986115263/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-21 14:01:27 +0000 UTC FinishedAt: 2026-08-21 14:01:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-21 14:01:27 +0000 UTC FinishedAt: 2026-08-21 14:01:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-21 14:01:27 +0000 UTC FinishedAt: 2026-08-21 14:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-21 14:01:27 +0000 UTC FinishedAt: 2026-08-21 14:03:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*26fbc177-f096-4e7c-a796-7b33d88c890f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-1986115263/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-21 14:03:24 +0000 UTC FinishedAt: 2026-08-21 17:08:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-21 14:03:24 +0000 UTC FinishedAt: 2026-08-21 17:08:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*a238461c-0a5b-4da3-b9cb-00cfbbd452b9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*26fbc177-f096-4e7c-a796-7b33d88c890f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-4172900874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-1986115263/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-21 14:03:24 +0000 UTC FinishedAt: 2026-08-21 14:03:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-21 14:03:24 +0000 UTC FinishedAt: 2026-08-21 14:03:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-convert-artifact-2943762196/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-21 14:03:24 +0000 UTC FinishedAt: 2026-08-21 14:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-21 14:03:24 +0000 UTC FinishedAt: 2026-08-21 14:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-21 14:03:24 +0000 UTC FinishedAt: 2026-08-21 14:03:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-21 14:03:34 +0000 UTC FinishedAt: 2026-08-21 17:08:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wjpj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_tables_commit","nf_tables_abort"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e625a9477d12baaff4025c5f9989184a907ea8fc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETFILTER","NF_TABLES"],"series_id":"1834f170-c445-44cb-a08b-53cce57e6744","tree_name":"nf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-21 14:03:34 +0000 UTC FinishedAt: 2026-08-21 17:07:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a238461c-0a5b-4da3-b9cb-00cfbbd452b9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*26fbc177-f096-4e7c-a796-7b33d88c890f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-4172900874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-build-action-1986115263/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8wjpj/series-workflow8wjpj-convert-artifact-2943762196/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}