Name: series-workflowjbx7v Phase: Succeeded StartedAt: 2026-08-06 16:24:14 +0000 UTC FinishedAt: 2026-08-06 20:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[0] Phase: Succeeded StartedAt: 2026-08-06 16:24:14 +0000 UTC FinishedAt: 2026-08-06 16:30:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 16:24:14 +0000 UTC FinishedAt: 2026-08-06 16:30:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "NETFILTER", "IP_SET", "IP_SET_BITMAP_IP", "IP_SET_BITMAP_IPMAC", "IP_SET_BITMAP_PORT", "IP_SET_LIST_SET", "DEBUG_NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "NETFILTER", "IP_SET", "IP_SET_BITMAP_IP", "IP_SET_BITMAP_IPMAC", "IP_SET_BITMAP_PORT", "IP_SET_LIST_SET", "DEBUG_NET" ], "series_id": "ddf873ae-e178-4e5b-81ab-87cf5e785777" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_set_flush", "list_set_flush", "bitmap_ip_flush", "bitmap_ipmac_flush", "bitmap_port_flush" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfQklUTUFQX0lQJiMzNDssCiAgICAmIzM0O0lQX1NFVF9CSVRNQVBfSVBNQUMmIzM0OywKICAgICYjMzQ7SVBfU0VUX0JJVE1BUF9QT1JUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9MSVNUX1NFVCYjMzQ7LAogICAgJiMzNDtERUJVR19ORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfZmx1c2gmIzM0OywKICAgICYjMzQ7bGlzdF9zZXRfZmx1c2gmIzM0OywKICAgICYjMzQ7Yml0bWFwX2lwX2ZsdXNoJiMzNDssCiAgICAmIzM0O2JpdG1hcF9pcG1hY19mbHVzaCYjMzQ7LAogICAgJiMzNDtiaXRtYXBfcG9ydF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpbnN0ZWFkIGFkZHMgYSBERUJVR19ORVRfV0FSTl9PTl9PTkNFIHRvIGFzc2VydCB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIGEgYnVnIGV4aXN0cyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IHByb3Blcmx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZyBhbmQgbGVhdmUgdGhlIHN0YXRlIG5vbi16ZXJvLCByYXRoZXIgdGhhbiBzaWxlbnRseSBoaWRpbmcgdGhlIGJ1Zy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE0OGY1ZWVlZTJmOGNjY2FiYTRiNGI4ZjdkNDRiYjQzOWU3YjA4ZTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDE2OjI1OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaCBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaFxuaW5kZXggMjI2ZmRmMTdiNjgzMi4uZDZhN2U2NjA0NTQyMiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oXG5AQCAtNzcsNyAmIzQzOzc3LDcgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuIFx0XHRtdHlwZV9leHRfY2xlYW51cChzZXQpO1xuIFx0Yml0bWFwX3plcm8obWFwLVx1MDAzZW1lbWJlcnMsIG1hcC1cdTAwM2VlbGVtZW50cyk7XG4gXHRzZXQtXHUwMDNlZWxlbWVudHMgPSAwO1xuLVx0YXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7XG4mIzQzO1x0REVCVUdfTkVUX1dBUk5fT05fT05DRShhdG9taWM2NF9yZWFkKFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSkgXHUwMDNlIDApO1xuIH1cbiBcbiAvKiBDYWxjdWxhdGUgdGhlIGFjdHVhbCBtZW1vcnkgc2l6ZSBvZiB0aGUgc2V0IGRhdGEgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xuaW5kZXggY2EzZWY5NDc5ZTgzOC4uMDI0ZGUzYmM5ZmMzYyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmNcbkBAIC00MjAsOCAmIzQzOzQyMCw3IEBAIGxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCBcdTAwMjZtYXAtXHUwMDNlbWVtYmVycywgbGlzdClcbiBcdFx0bGlzdF9zZXRfZGVsKHNldCwgZSk7XG4tXHRzZXQtXHUwMDNlZWxlbWVudHMgPSAwO1xuLVx0YXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7XG4mIzQzO1x0REVCVUdfTkVUX1dBUk5fT05fT05DRShzZXQtXHUwMDNlZWxlbWVudHMgXHUwMDNlIDApO1xuIH1cbiBcbiBzdGF0aWMgdm9pZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0JJVE1BUF9JUCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfQklUTUFQX0lQTUFDJiMzNDssCiAgICAmIzM0O0lQX1NFVF9CSVRNQVBfUE9SVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OywKICAgICYjMzQ7REVCVUdfTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2xpc3Rfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2JpdG1hcF9pcF9mbHVzaCYjMzQ7LAogICAgJiMzNDtiaXRtYXBfaXBtYWNfZmx1c2gmIzM0OywKICAgICYjMzQ7Yml0bWFwX3BvcnRfZmx1c2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZsdXNoIG9wZXJhdGlvbnMgZm9yIGJpdG1hcCBhbmQgbGlzdCBJUCBzZXRzIGJ5IHJlbW92aW5nIHJlZHVuZGFudCBhc3NpZ25tZW50cyB0aGF0IHJlc2V0IHRoZSBlbGVtZW50IGNvdW50IGFuZCBleHRlbnNpb24gc2l6ZSB0byB6ZXJvLCBhbmQgaW5zdGVhZCBhZGRzIGEgREVCVUdfTkVUX1dBUk5fT05fT05DRSB0byBhc3NlcnQgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFscmVhZHkgemVyby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgcmVtb3ZlcyBzdGF0ZS1yZXNldHRpbmcgYXNzaWdubWVudHMsIG1lYW5pbmcgdGhhdCBpZiBhIGJ1ZyBleGlzdHMgd2hlcmUgZWxlbWVudHMgYXJlIG5vdCBwcm9wZXJseSBkZWNyZW1lbnRlZCwgaXQgd2lsbCBub3cgdHJpZ2dlciBhIHdhcm5pbmcgYW5kIGxlYXZlIHRoZSBzdGF0ZSBub24temVybywgcmF0aGVyIHRoYW4gc2lsZW50bHkgaGlkaW5nIHRoZSBidWcuIEZ1enppbmcgdGhpcyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBjb3VudHMgYXJlIGNvcnJlY3RseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNDhmNWVlZWUyZjhjY2NhYmE0YjRiOGY3ZDQ0YmI0MzllN2IwOGUxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAxNjoyNToyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaCBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaAppbmRleCAyMjZmZGYxN2I2ODMyLi5kNmE3ZTY2MDQ1NDIyIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oCkBAIC03Nyw3ICYjNDM7NzcsNyBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpCiAJCW10eXBlX2V4dF9jbGVhbnVwKHNldCk7CiAJYml0bWFwX3plcm8obWFwLSZndDttZW1iZXJzLCBtYXAtJmd0O2VsZW1lbnRzKTsKIAlzZXQtJmd0O2VsZW1lbnRzID0gMDsKLQlhdG9taWM2NF9zZXQoJmFtcDtzZXQtJmd0O2V4dF9zaXplLCAwKTsKJiM0MzsJREVCVUdfTkVUX1dBUk5fT05fT05DRShhdG9taWM2NF9yZWFkKCZhbXA7c2V0LSZndDtleHRfc2l6ZSkgJmd0OyAwKTsKIH0KIAogLyogQ2FsY3VsYXRlIHRoZSBhY3R1YWwgbWVtb3J5IHNpemUgb2YgdGhlIHNldCBkYXRhICovCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYwppbmRleCBjYTNlZjk0NzllODM4Li4wMjRkZTNiYzlmYzNjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMKQEAgLTQyMCw4ICYjNDM7NDIwLDcgQEAgbGlzdF9zZXRfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG4sICZhbXA7bWFwLSZndDttZW1iZXJzLCBsaXN0KQogCQlsaXN0X3NldF9kZWwoc2V0LCBlKTsKLQlzZXQtJmd0O2VsZW1lbnRzID0gMDsKLQlhdG9taWM2NF9zZXQoJmFtcDtzZXQtJmd0O2V4dF9zaXplLCAwKTsKJiM0MzsJREVCVUdfTkVUX1dBUk5fT05fT05DRShzZXQtJmd0O2VsZW1lbnRzICZndDsgMCk7CiB9CiAKIHN0YXRpYyB2b2lkCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2g6IFBvdGVudGlhbCBGdW5jdGlvbmFsIENoYW5nZXMgYW5kIEZ1enppbmcgQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgcmVwbGFjaW5nIGFzc2lnbm1lbnRzIHdpdGggYERFQlVHX05FVF9XQVJOX09OX09OQ0VgIGNoZWNrcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSBgYXRvbWljNjRfc2V0KCZhbXA7c2V0LSZndDtleHRfc2l6ZSwgMCk7YCBpbiBgbXR5cGVfZmx1c2hgIGlzIGJlaW5nIHJlcGxhY2VkLCBhbmQgc2ltaWxhcmx5LCBgc2V0LSZndDtlbGVtZW50cyA9IDA7IGF0b21pYzY0X3NldCgmYW1wO3NldC0mZ3Q7ZXh0X3NpemUsIDApO2AgaW4gYGxpc3Rfc2V0X2ZsdXNoYCBpcyBnZXR0aW5nIHN3YXBwZWQgb3V0LgoKSW5pdGlhbGx5LCBteSB0aG91Z2h0IHdhcywgJiMzNDtXYWl0LCB0aGlzIHJlbW92ZXMgdGhlIHJlc2V0dGluZyBvZiB0aG9zZSB2YXJpYWJsZXMgYW5kIGp1c3QgcHV0cyBhIGRlYnVnIHdhcm5pbmcgdGhlcmU/JiMzNDsgVGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJpZ2h0PyBJdCYjMzk7cyAqcmVtb3ZpbmcqIGFuIGFzc2lnbm1lbnQsIG5vdCBqdXN0IGFkZGluZyBsb2dnaW5nLiBUaGF0JiMzOTtzIGEgc2hpZnQgaW4gYmVoYXZpb3IuCgpUaGVuIEkgcGF1c2VkIGFuZCB0aG91Z2h0LCAmIzM0O0hvbGQgb24sIGlzIGl0IGp1c3QgYSBkZWJ1ZyB3YXJuaW5nLCBvciBkb2VzIHRoaXMgYWN0dWFsbHkgKmNoYW5nZSogaG93IHRoZSBzeXN0ZW0gd29ya3M/JiMzNDsgTGV0JiMzOTtzIGRpZyBhIGJpdCBkZWVwZXIuIFRha2luZyBhIGxvb2sgYXQgYGxpc3Rfc2V0X2ZsdXNoYDoKCmBgYGMKCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCAmYW1wO21hcC0mZ3Q7bWVtYmVycywgbGlzdCkKCQlsaXN0X3NldF9kZWwoc2V0LCBlKTsKLQlzZXQtJmd0O2VsZW1lbnRzID0gMDsKLQlhdG9taWM2NF9zZXQoJmFtcDtzZXQtJmd0O2V4dF9zaXplLCAwKTsKJiM0MzsJREVCVUdfTkVUX1dBUk5fT05fT05DRShzZXQtJmd0O2VsZW1lbnRzICZndDsgMCk7CmBgYAoKTXkgZ3Vlc3MgaXMgdGhhdCBgbGlzdF9zZXRfZGVsYCBwcm9iYWJseSAqYWxyZWFkeSogZGVjcmVtZW50cyBgc2V0LSZndDtlbGVtZW50c2AgYW5kIGBzZXQtJmd0O2V4dF9zaXplYC4gVGhhdCBtZWFucyB0aGUgcmVzZXQgdG8gMCB3YXMgcmVkdW5kYW50LiBJZiBzbywgaXQmIzM5O3MgcG9zc2libGUgdGhhdCByZXNldHRpbmcgdGhlc2UgdmFyaWFibGVzIHdhcyBoaWRpbmcgYSBidWcsIGFuZCBub3csIGl0IHdpbGwgbm90IGJlIHJlc2V0LiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBub3csIGlmIGEgYnVnICpkaWQqIGV4aXN0IGFuZCBzb21laG93IGxlZnQgdGhlIGNvdW50cyBub24temVybywgaXQgd291bGQgc3RheSB0aGF0IHdheSBhbmQgd2Ugd291bGQgYmUgYWxlcnRlZCBieSB0aGUgZGVidWcgd2FybmluZy4KClRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsICYjMzQ7SXMgdGhpcyBzaWduaWZpY2FudCBlbm91Z2ggdG8gd2FycmFudCBmdXp6aW5nPyYjMzQ7IEkgdGhpbmsgc28uIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHNlbnNlIHRoYXQgaWYgdGhlcmUmIzM5O3MgYW4gaXNzdWUgbGVhZGluZyB0byBpbmNvcnJlY3QgY291bnRzLCB0aGlzIHdpbGwgZXhwb3NlIGl0LCBvciBhdCBsZWFzdCB3YXJuIHVzLiBTbywgZXZlbiB0aG91Z2ggaXQgbG9va3MgbGlrZSBzaW1wbGUgcmVtb3ZhbCBvZiBwb3RlbnRpYWxseSByZWR1bmRhbnQgYXNzaWdubWVudHMsIGl0IGNvdWxkIHJldmVhbCBleGlzdGluZywgbWFza2VkIHByb2JsZW1zLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gdmVyaWZ5IGBsaXN0X3NldF9mbHVzaGAgYW5kIGBtdHlwZV9mbHVzaGAgdG8gZW5zdXJlIHRoaXMgaXMgdGhlIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGlzdF9zZXRfZmx1c2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00MTU9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDE2Omxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDE3LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU0Mz1saXN0X3NldF9jYW5jZWxfZ2Moc3RydWN0IGlwX3NldCAqc2V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTUwLVx0LyogRmx1c2ggbGlzdCB0byBkcm9wIHJlZmVyZW5jZXMgdG8gb3RoZXIgaXBzZXRzICovXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU1MTpcdGxpc3Rfc2V0X2ZsdXNoKHNldCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU1Mi19XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IHNldF92YXJpYW50ID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTYyLVx0LmRlc3Ryb3kgPSBsaXN0X3NldF9kZXN0cm95LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjM6XHQuZmx1c2hcdD0gbGlzdF9zZXRfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2NC1cdC5oZWFkXHQ9IGxpc3Rfc2V0X2hlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc0MAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBgaXBzZXRfYml0bWFwX2dlbi5oYCBNeXN0ZXJ5KioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhgIGhlYWRlciBmaWxlLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGBtdHlwZV9mbHVzaGAgaXMgZ29pbmcgb24gaGVyZS4gSXQmIzM5O3MgdXN1YWxseSB3b3J0aCBkb3VibGUtY2hlY2tpbmcgdGhlIGxvdy1sZXZlbCBjb2RlIHRoYXQgY291bGQgaW1wYWN0IGJpdG1hcCBvcGVyYXRpb25zIGluIElQIHNldHMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gYG10eXBlX2ZsdXNoYCBhbmQgdGhlIGJpdG1hcCBnZW5lcmF0aW9uIHNwZWNpZmljYWxseSwgYXMgdGhpcyBjb3VsZCBoYXZlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb24gbWVtb3J5IG1hbmFnZW1lbnQgb3IgYXRvbWljaXR5IGR1cmluZyBmbHVzaCBvcGVyYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHdheSB0aGUgYml0bWFwIHN0cnVjdHVyZXMgYXJlIGhhbmRsZWQgZHVyaW5nIHRoaXMgc3BlY2lmaWMgcHJvY2Vzcy4gQW55IHVuZXhwZWN0ZWQgYmVoYXZpb3IgaGVyZSBhbmQgaXQgY291bGQgYmUgdGhlIHNvdXJjZSBvZiBhIHN1YnRsZSwgYnV0IGNyaXRpY2FsLCBidWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfZmx1c2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oLTIzLSNkZWZpbmUgbXR5cGVfbWVtc2l6ZVx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX21lbXNpemUpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6MjQ6I2RlZmluZSBtdHlwZV9mbHVzaFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oLTI1LSNkZWZpbmUgbXR5cGVfaGVhZFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2hlYWQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oPTcxPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6NzI6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oLTczLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg9MzAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmgtMzEwLVx0LmRlc3Ryb3kgPSBtdHlwZV9kZXN0cm95LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oOjMxMTpcdC5mbHVzaFx0PSBtdHlwZV9mbHVzaCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC0zMTItXHQuaGVhZFx0PSBtdHlwZV9oZWFkLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTY0PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE5OS0jdW5kZWYgbXR5cGVfYWhhc2hfbWVtc2l6ZVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMDA6I3VuZGVmIG10eXBlX2ZsdXNoXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIwMS0jdW5kZWYgbXR5cGVfZGVzdHJveVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjQ3LSNkZWZpbmUgbXR5cGVfYWhhc2hfbWVtc2l6ZVx0SVBTRVRfVE9LRU4oTVRZUEUsIF9haGFzaF9tZW1zaXplKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNDg6I2RlZmluZSBtdHlwZV9mbHVzaFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNDktI2RlZmluZSBtdHlwZV9kZXN0cm95XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVzdHJveSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTQ0OT1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo0NTA6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC00NTEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgbXR5cGVfdmFyaWFudCA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE1NjYtXHQuZGVzdHJveSA9IG10eXBlX2Rlc3Ryb3ksXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE1Njc6XHQuZmx1c2hcdD0gbXR5cGVfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE1NjgtXHQuaGVhZFx0PSBtdHlwZV9oZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3ODAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYW4gSVBzZXQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgcmVhY3Rpb24gaXMgYSBtaXggb2YgaW50cmlndWUgYW5kIGNvbmNlcm4uIEl0IHByaW1hcmlseSB0b3VjaGVzIGBpcF9zZXRfYml0bWFwX2dlbi5oYCBhbmQgYGlwX3NldF9saXN0X3NldC5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBtdHlwZV9mbHVzaGAgYW5kIGBsaXN0X3NldF9mbHVzaGAgZnVuY3Rpb25zLiBJdCBzZWVtcyB0byBiZSBjbGVhbmluZyB1cCBzb21lIHN0YXRlIHJlc2V0IGxvZ2ljLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlcGVyY3Vzc2lvbnMuCgpJbiBgaXBfc2V0X2JpdG1hcF9nZW4uaGAsIHRoZSBwYXRjaCByZW1vdmVzIGBhdG9taWM2NF9zZXQoJmFtcDtzZXQtJmd0O2V4dF9zaXplLCAwKTtgIGFmdGVyIHplcm9pbmcgb3V0IHRoZSBiaXRtYXAgYW5kIHJlc2V0dGluZyBgc2V0LSZndDtlbGVtZW50c2AgaW4gYG10eXBlX2ZsdXNoYC4gVGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBhbHNvIGFkZHMgYSBkZWJ1ZyB3YXJuaW5nLiBOb3csIHRoZSB3ZWlyZCBwYXJ0IGlzIGBtdHlwZV9mbHVzaGAgc3RpbGwgaGFzIGBzZXQtJmd0O2VsZW1lbnRzID0gMDtgLiBUaGlzIGluY29uc2lzdGVuY3kgaXMgYSByZWQgZmxhZy4KClRoZSBgaXBfc2V0X2xpc3Rfc2V0LmNgIGNoYW5nZXMgYXJlIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcuIGBsaXN0X3NldF9mbHVzaGAgdXNlZCB0byByZXNldCAqYm90aCogYHNldC0mZ3Q7ZWxlbWVudHNgIGFuZCBgc2V0LSZndDtleHRfc2l6ZWAuIFRoZSBwYXRjaCByZW1vdmVzIHRoZXNlIGFzc2lnbm1lbnRzIGFuZCBhZGRzIGEgZGVidWcgd2FybmluZyBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgdG8gY2hlY2sgaWYgYHNldC0mZ3Q7ZWxlbWVudHNgIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlLiBJZiB0aGUgb3JpZ2luYWwgY29kZSAqcmVsaWVkKiBvbiB0aGVzZSBhc3NpZ25tZW50cyAoYW5kIEkmIzM5O20gc3VzcGljaW91cyB0aGF0IGl0IG1pZ2h0KSwgdGhlbiB3ZSBoYXZlIGEgcG90ZW50aWFsIHJlZ3Jlc3Npb24uIElmIHRoZXkgd2VyZSByZWR1bmRhbnQsIHRoZW4gdGhpcyBpcyBhIGNsZWFudXAsIGFuZCB0aGUgZGVidWcgd2FybmluZyBpcyBhIHNhZmV0eSBuZXQuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIG5ldHdvcmsgY29kZSwgYW5kIG15IGV4cGVyaWVuY2UgaW4gdGhpcyBmaWVsZCwgdGhlIHByZXNlbmNlIG9mIHRoZSBkZWJ1ZyB3YXJuaW5nIGFuZCB0aGUgYXNzaWdubWVudHMmIzM5OyByZW1vdmFsIHNjcmVhbSAmIzM0O2Z1enogdGhpcyYjMzQ7LiAgRXZlbiBpZiB0aGUgYXNzaWdubWVudHMgd2VyZSByZWR1bmRhbnQsIHJlbW92aW5nIHRoZW0gY291bGQgZXhwb3NlIGEgc3VidGxlIGJ1ZywgbGlrZSBhIG1pc3NpbmcgZGVjcmVtZW50IHNvbWV3aGVyZS4gSWYgYHNldC0mZ3Q7ZWxlbWVudHNgIG9yIGBzZXQtJmd0O2V4dF9zaXplYCBhcmVuJiMzOTt0IGJlaW5nIHByb3Blcmx5IG1hbmFnZWQsIHRoaXMgcGF0Y2ggd2lsbCBtYWtlIHRoZSBpc3N1ZSB2aXNpYmxlIHdpdGggYSB3YXJuaW5nLCBhbmQgbGlrZWx5IHVuY292ZXIgc29tZSBzZXJpb3VzIGNvcm5lciBjYXNlIGlzc3Vlcy4gVGhpcyBtYWtlcyBpdCBhbiBpZGVhbCB0YXJnZXQgZm9yIHN5emthbGxlci4gVGhlIGRlYnVnIHdhcm5pbmcgd2lsbCBxdWlja2x5IGJyaW5nIGFueSBpbmNvcnJlY3QgdmFsdWVzIHRvIGxpZ2h0LCBhbmQgdGhlIHJlbW92ZWQgYXNzaWdubWVudHMgb3BlbiB0aGUgZG9vciB0byBhbGwgc29ydHMgb2Ygb3RoZXIgcHJvYmxlbXMuCgpTbywgdGhlIGtleSBmdW5jdGlvbnMgaGVyZSBhcmUgYGxpc3Rfc2V0X2ZsdXNoYCBhbmQgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIGBtdHlwZV9mbHVzaGAuIGBsaXN0X3NldF9mbHVzaGAgaXMgc3RhdGljIGFuZCBhc3NpZ25lZCB0byBgLmZsdXNoYCBpbiBgc2V0X3ZhcmlhbnRgLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBgaXBfc2V0X2ZsdXNoYCBpbiBgaXBfc2V0X2NvcmUuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGNhbGxlZCBhbmQgd2hhdCB0aGUgcG9zc2libGUgaW50ZXJhY3Rpb24gc2NlbmFyaW9zIGFyZS4gSSB3aWxsIG5lZWQgdG8gbG9vayBkZWVwZXIgaW50byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzAyPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMwMzppcF9zZXRfZmx1c2hfc2V0KHN0cnVjdCBpcF9zZXQgKnNldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzA0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzEyOnN0YXRpYyBpbnQgaXBfc2V0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMy1cdFx0XHRjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI1LVx0XHRcdGlmIChzKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMjY6XHRcdFx0XHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjctXHRcdH1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzMi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzMzOlx0XHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzQtXHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2NS1cdFtJUFNFVF9DTURfRkxVU0hdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTY2Olx0XHQuY2FsbFx0XHQ9IGlwX3NldF9mbHVzaCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY3LVx0XHQudHlwZVx0XHQ9IE5GTkxfQ0JfTVVURVgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ0MAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBGbHVzaGluZyBNZWNoYW5pc20qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBJUCBzZXQgZmx1c2hpbmcgaXMgaW1wbGVtZW50ZWQuIEl0IGxvb2tzIGxpa2UgYGlwX3NldF9mbHVzaGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBmbHVzaCBvcGVyYXRpb24gaXRzZWxmLiBUaGF0IG1ha2VzIHNlbnNlLCB0aGUgY29kZSBoYXMgdG8gYmVnaW4gc29tZXdoZXJlLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgc2VlIGEgYG10eXBlX2ZsdXNoYCB0ZW1wbGF0ZSwgc3BlY2lmaWNhbGx5IGluIGBpcF9zZXRfYml0bWFwX2dlbi5oYC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIHJlYWwgbWFnaWMgaGFwcGVucy4gSXQgbG9va3MgbGlrZSB0aGlzIHRlbXBsYXRlIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBhY3R1YWwgZmx1c2ggZnVuY3Rpb25zIGZvciBkaWZmZXJlbnQgZGF0YSB0eXBlcy4gVGhleSYjMzk7cmUgcHJvYmFibHkgaW5zdGFudGlhdGVkIHRvIGNyZWF0ZSBmdW5jdGlvbnMgbGlrZSBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGFuZCBgYml0bWFwX3BvcnRfZmx1c2hgLiBUaGlzIGFwcHJvYWNoIGlzIGZhaXJseSBlZmZpY2llbnQgYXMgaXQgYWxsb3dzIHRoZW0gdG8gcmV1c2UgdGhlIHNhbWUgc3RydWN0dXJlLCBidXQgd2l0aCB2YXJpYXRpb25zIHRvIGhhbmRsZSB0aGUgZGlmZmVyZW50IHVuZGVybHlpbmcgZGF0YS4gSW50ZXJlc3RpbmcgdXNlIG9mIHRlbXBsYXRlcyB0aGVyZS4gSSYjMzk7ZCBoYXZlIHRvIGxvb2sgZnVydGhlciB0byBzZWUgd2hhdCBkZWZpbmVzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiaXRtYXBfaXBfZmx1c2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzU0CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRGVjb2RpbmcgdGhhdCBNYWNybzogQSBEZWVwIERpdmUqKgoKQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG10eXBlX2ZsdXNoYCBtYWNybyBkZWZpbml0aW9uIGFuZCBpdCYjMzk7cyBzdGFydGluZyB0byB0cmlnZ2VyIHNvbWUgYWxhcm1zLiBJdCYjMzk7cyBkZWZpbmVkIGFzIGAjZGVmaW5lIG10eXBlX2ZsdXNoIElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpYC4gT2theSwgc28gYG10eXBlX2ZsdXNoYCBpcyBiZWluZyBjb25zdHJ1Y3RlZCB2aWEgYSBtYWNybywgd2hpY2ggaXNuJiMzOTt0IHVudXN1YWwsIGJ1dCB0aGUgYE1UWVBFYCBwYXJ0IGlzIHRoZSBrZXkuIFRoYXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCwgYW5kIEkgc3VzcGVjdCBpdCYjMzk7cyBwb2ludGluZyBtZSB0byBzb21lIGNvcmUgc3RydWN0dXJlIG9yIHR5cGUgZGVmaW5pdGlvbi4KClRpbWUgdG8gc3dpdGNoIGdlYXJzLiBMZXQmIzM5O3MgZGlnIGludG8gYGlwX3NldF9iaXRtYXBfaXAuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCB0aGlzIGVsdXNpdmUgYE1UWVBFYCBhY3R1YWxseSAqaXMqLiBUaGlzIGtpbmQgb2YgbWFjcm8gZGFuY2UgaXMgb2Z0ZW4gaG93IHRoZXkgYWJzdHJhY3QgYXdheSB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMsIHByb2JhYmx5IGZvciBmbGV4aWJpbGl0eSBvciBwbGF0Zm9ybS1zcGVjaWZpYyByZWFzb25zLiBJIG5lZWQgdG8gdW5yYXZlbCB0aGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoYXQgYG10eXBlX2ZsdXNoYCBpcyB1bHRpbWF0ZWx5IHJlZmVycmluZyB0by4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyEgVGltZSB0byByZXZlcnNlIGVuZ2luZWVyLiBMZXQmIzM5O3MgZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgTVRZUEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmM9MzM9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9iaXRtYXA6aXBcJiMzNDspO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmMtMzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYzozNTojZGVmaW5lIE1UWVBFXHRcdGJpdG1hcF9pcFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmMtMzYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmM9MzM9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9iaXRtYXA6aXAsbWFjXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jLTM0LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmM6MzU6I2RlZmluZSBNVFlQRVx0XHRiaXRtYXBfaXBtYWNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jLTM2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM9Mjc9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9iaXRtYXA6cG9ydFwmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jLTI4LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYzoyOTojZGVmaW5lIE1UWVBFXHRcdGJpdG1hcF9wb3J0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jLTMwLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYz03MD1oYXNoX2lwNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA0X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNF9lbGVtICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy03NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYzo3NTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXA0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtNzYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jPTIwMj1oYXNoX2lwNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA2X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNl9lbGVtICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy0yMDgtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM6MjA5OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy0yMTAtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYz03Mj1oYXNoX2lwbWFjNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTc3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jOjc4OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcG1hYzRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYy03OS0jZGVmaW5lIFBGXHRcdDRcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmM9MTgwPWhhc2hfaXBtYWM2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcG1hYzZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtMTg5LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jOjE5MDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBtYWM2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtMTkxLSNkZWZpbmUgUEZcdFx0NlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM9Njk9aGFzaF9pcG1hcms0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcG1hcms0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy03NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM6NzU6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwbWFyazRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtNzYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYz0yMDU9aGFzaF9pcG1hcms2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcG1hcms2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy0yMTItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jOjIxMzojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBtYXJrNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy0yMTQtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM9Nzk9aGFzaF9pcHBvcnQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnQ0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy04NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM6ODY6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtODctI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYz0yNDk9aGFzaF9pcHBvcnQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy0yNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jOjI1ODojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBwb3J0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy0yNTktI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYz03Nz1oYXNoX2lwcG9ydGlwNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0aXA0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jLTg0LS8qIENvbW1vbiBmdW5jdGlvbnMgKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYzo4NTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBwb3J0aXA0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmMtODYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jPTI0OD1oYXNoX2lwcG9ydGlwNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0aXA2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jLTI1Ni1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYzoyNTc6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydGlwNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jLTI1OC0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYz0xMjE9aGFzaF9pcHBvcnRuZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRuZXQ0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy0xMjgtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjEyOTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBwb3J0bmV0NFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy0xMzAtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYz0zNzk9aGFzaF9pcHBvcnRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRuZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy0zODctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjM4ODojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBwb3J0bmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy0zODktI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmM9NjE9aGFzaF9tYWM0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9tYWM0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYy02NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmM6NjY6I2RlZmluZSBNVFlQRVx0XHRoYXNoX21hYzRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmMtNjctI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0xMDI9aGFzaF9uZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXQ0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMDctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEwODojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0NFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMDktI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0yNzM9aGFzaF9uZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0yODAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjI4MTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0yODItI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xMjk9aGFzaF9uZXRpZmFjZTRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldGlmYWNlNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xMzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MTM1OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRpZmFjZTRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xMzYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTM2Mz1oYXNoX25ldGlmYWNlNl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM3MC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzozNzE6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldGlmYWNlNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM3Mi0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0xMjU9aGFzaF9uZXRuZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRuZXQ0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0xMzAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjEzMTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0bmV0NFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0xMzItI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0zNjM9aGFzaF9uZXRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRuZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0zNzAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjM3MTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0bmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0zNzItI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTExNz1oYXNoX25ldHBvcnQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyMy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjEyNDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0cG9ydDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyNS0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0zMzQ9aGFzaF9uZXRwb3J0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzozNDM6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDQtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTEzMj1oYXNoX25ldHBvcnRuZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0bmV0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTEzOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjEzOTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0cG9ydG5ldDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTE0MC0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz00MjY9aGFzaF9uZXRwb3J0bmV0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydG5ldDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy00MzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzo0MzU6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnRuZXQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy00MzYtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbnNvdW5kL3BjaS9hc2locGkvaHBpNjIwNS5jPTE2MDA9c3RhdGljIHUxNiBib290X2xvYWRlcl9jb25maWdfZW1pZihzdHJ1Y3QgaHBpX2FkYXB0ZXJfb2JqICpwYW8sIGludCBkc3BfaW5kZXgpXG4tLVxuc291bmQvcGNpL2FzaWhwaS9ocGk2MjA1LmMtMTYyMC0jZGVmaW5lIFJTVF9PRlMgOFxuc291bmQvcGNpL2FzaWhwaS9ocGk2MjA1LmM6MTYyMTojZGVmaW5lIE1UWVBFX09GUyA0XG5zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYy0xNjIyLSNkZWZpbmUgUkhfT0ZTIDBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NDMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpcF9zZXQgRmx1c2ggRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBgaXBfc2V0X2ZsdXNoYCBhcHBlYXJzIHRvIGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBmbHVzaGluZyBzZXRzLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2g7IGBtdHlwZV9mbHVzaGAgYWxzbyBzZWVtcyB0byBiZSByZWxldmFudCwgYXMgaXQmIzM5O3MgdXNlZCB3aXRoaW4gYGlwX3NldF9oYXNoX2dlbi5oYC4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIGlmIHRoYXQgaGVhZGVyIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgcmVjZW50bHkuIExldCBtZSBjaGVjayB0aGUgZGlmZi4uLiBOb3BlLCBpdCBsb29rcyBsaWtlIG9ubHkgYGlwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgaXBfc2V0X2xpc3Rfc2V0LmNgIGhhdmUgY2hhbmdlcy4gU28gYGlwX3NldF9oYXNoX2dlbi5oYCBpcyBsaWtlbHkgbm90IHRoZSBmb2N1cyBoZXJlLgoKUmlnaHQsIGJhY2sgdG8gYG10eXBlX2ZsdXNoYC4gSXQmIzM5O3MgdXNlZCBpbiBgaXBfc2V0X2JpdG1hcF9nZW4uaGAgZm9yIGBiaXRtYXBfaXBgLCBgYml0bWFwX2lwbWFjYCwgYW5kIGBiaXRtYXBfcG9ydGAuIFRoaXMgbWVhbnMgdGhhdCBgaXBfc2V0X2ZsdXNoYCBpcyBzdGlsbCB0aGUgbWFpbiBmb2N1cyBidXQgaXQgaXMgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhlIGNvbm5lY3Rpb24gd2l0aCB0aGUgYml0bWFwIHNldHMuCgpOb3csIGxldCYjMzk7cyBkZXRlcm1pbmUgdGhlIHJlYWNoYWJpbGl0eSBhbmQgYW55IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGZvciBgaXBfc2V0X2ZsdXNoYC4gSXQmIzM5O3MgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYC4gQXMgZm9yIHRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQsIGl0IHNlZW1zIHdlJiMzOTtyZSBsb29raW5nIGF0IGBDT05GSUdfSVBfU0VUYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX0lQYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX0lQTUFDYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX1BPUlRgLCBhbmQgYENPTkZJR19JUF9TRVRfTElTVF9TRVRgLiBFeGNlbGxlbnQsIHRoYXQgY292ZXJzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBiaXRtYXAgc2V0IHZhcmlhbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjI6bWVudWNvbmZpZyBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTQ9aWYgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY6Y29uZmlnIElQX1NFVF9NQVhcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiBJUCBzZXRzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjI4OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzYtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mzc6Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDY6Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTU6Y29uZmlnIElQX1NFVF9IQVNIX0lQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY0LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjY1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03My1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6ODM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsaXAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMTI6Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMjE6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjktXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzEtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTM5OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDAtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE0ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0Vcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY4OmNvbmZpZyBJUF9TRVRfTElTVF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjktXHR0cmlzdGF0ZSBcJiMzNDtsaXN0OnNldCBzZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ5MwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgZGVsdmUgaW50byB0aGVzZSBjb25maWd1cmF0aW9uczoKCioqRGVlcCBEaXZlIGludG8gSVBzZXQgQ29uZmlndXJhdGlvbnMgYW5kIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgSVBzZXQgY29uZmlndXJhdGlvbnM6IGBJUF9TRVRgLCBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYElQX1NFVF9CSVRNQVBfUE9SVGAsIGFuZCBgSVBfU0VUX0xJU1RfU0VUYC4gSXQmIzM5O3MgYSBzdGFuZGFyZCBzZXQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGNsZWFybHkuIFdhaXQgYSBtaW51dGXigKYgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGBJUF9TRVRgIGlzIGJ1aWx0IG9uIHRvcCBvZiBgTkVURklMVEVSYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpbnRlcmFjdGlvbiBhbmQgYW55IGltcGxpY2F0aW9ucyBpdCBtaWdodCBoYXZlIGZvciBteSBzcGVjaWZpYyB1c2UgY2FzZSwgc28gbGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYC4gVGltZSB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBob3cgdGhlc2UgZWxlbWVudHMgd29yayB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mj1tZW51Y29uZmlnIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJUCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTUtXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY9Y29uZmlnIElQX1NFVF9NQVhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTktXHRyYW5nZSAyIDY1NTM0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MjA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTIxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yOD1jb25maWcgSVBfU0VUX0JJVE1BUF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MzA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0zNz1jb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM5Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00MC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NDY9Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDktXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTU1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU3Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01OC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NjU9Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Njc6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY4LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz03ND1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NjpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzctXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTgzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6ODU6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg2LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz05Mz1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTU6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk2LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMDM9Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDU6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNi1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm1hYyBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjExNDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMjE9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMzpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI0LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMzA9Y29uZmlnIElQX1NFVF9IQVNIX05FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMyOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzMtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQxOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDItXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1MS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTU4PWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTYwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE2OD1jb25maWcgSVBfU0VUX0xJU1RfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7bGlzdDpzZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNzA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3MS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTc4PWNvbmZpZyBHQ09WX1BST0ZJTEVfSVBTRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNzktXHRib29sIFwmIzM0O0VuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxODA6XHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTgxLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ3OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBJUCBTZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYElQIFNldGAgY29uZmlndXJhdGlvbiBjb2RlLiBJdCYjMzk7cyBjbGVhciB0aGF0IGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAgYXJlIGZvdW5kYXRpb25hbC4gVGhlbiwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgc3BlY2lmaWMgYElQIFNldGAgZnVuY3Rpb25hbGl0aWVzLiBMb29raW5nIGF0IHRoZSBjb25maWdzLCBJJiMzOTt2ZSBnb3QgYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGZvbGxvd2VkIGJ5IHRoZSBiaXRtYXAgY29uZmlndXJhdGlvbnM6IGBJUF9TRVRfQklUTUFQX0lQYCwgYElQX1NFVF9CSVRNQVBfSVBNQUNgLCBhbmQgYElQX1NFVF9CSVRNQVBfUE9SVGAuIFRob3NlIHNlZW0gdG8gYmUgdGhlIGtleSBvbmVzIHVzaW5nIGBpcF9zZXRfYml0bWFwX2dlbi5oYC4gQW5kLCBgSVBfU0VUX0xJU1RfU0VUYCBpcyBkZWZpbml0ZWx5IHVzaW5nIGBpcF9zZXRfbGlzdF9zZXQuY2AuIFNvIHRvIGJlIHByZWNpc2UsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlc2UgY29uZmlncyBhcmUgYWxsIGVuYWJsZWQ6IGBJTkVUYCwgYE5FVEZJTFRFUmAsIGBJUF9TRVRgLCBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYElQX1NFVF9CSVRNQVBfUE9SVGAsIGFuZCBgSVBfU0VUX0xJU1RfU0VUYC4KCk5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gYGlwX3NldF9mbHVzaGAuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgYW5kIGEgbmV0bGluayBjYWxsYmFjaywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGBJUFNFVF9DTURfRkxVU0hgLiAgSSB3b25kZXIgaWYgdGhhdCBgZmx1c2hgIGZ1bmN0aW9uIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoIHRoZXJlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgaXBfc2V0X2ZsdXNoX3NldGAgYW5kIHNlZSB3aGF0IHRoYXQgZXhwb3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfc2V0X2ZsdXNoX3NldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMwNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTEzMTI9c3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cdFx0XHRpZiAocylcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzI2Olx0XHRcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM2NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZsdXNoIE9wZXJhdGlvbiBpbiBgaXBfc2V0YCoqCgpPa2F5LCB0aGUgdGFzayBpcyB0byB1bmRlcnN0YW5kIHRoZSBmbHVzaGluZyBtZWNoYW5pc20gd2l0aGluIGBpcF9zZXRgLCBhbmQgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBpcF9zZXRfZmx1c2hgLCB3aGljaCBzZWVtcyB0byBiZSB0aGUgb2J2aW91cyBjYW5kaWRhdGUuIFJpZ2h0LCBpdCYjMzk7cyBhIG5ldGxpbmsgY2FsbGJhY2ssIHNvIGl0IGhhbmRsZXMgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNvbW11bmljYXRpb24sIHdoaWNoIGFsaWducyB3aXRoIGZsdXNoaW5nLiBOb3cgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBieSBkaWdnaW5nIGludG8gYGlwX3NldF9jb3JlLmNgIGFuZCBmaW5kaW5nIHRoZSBmdW5jdGlvbi4KCkFscmlnaHQsIHRoZXJlIGl0IGlzOiBgaXBfc2V0X2ZsdXNoYC4gQnV0IGl0JiMzOTtzIHN0YXRpYy4gSG1tLCB1c3VhbGx5LCBJIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIEl0JiMzOTtzIHVzZWQgYXMgYSBjYWxsYmFjaywgc28gaXQgc2hvdWxkIG5vdCBiZSBpbmxpbmVkLiBJIGp1c3QgY29uZmlybWVkOiBgc3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlgLgoKVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBzdGF0aWMgbWFrZXMgbWUgYSBsaXR0bGUgY2F1dGlvdXMuIEl0IG1pZ2h0IG1lYW4gdGhlIGNvbXBpbGVyIG9wdGltaXplZCBpdCBhZ2dyZXNzaXZlbHksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaXQgbm90IGJlaW5nIGEgZGlzdGluY3Qgc3ltYm9sIEkgY291bGQgcG9pbnQgdG8uIEJ1dCBiZWNhdXNlIGl0JiMzOTtzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JgLCBpdCBzaG91bGRuJiMzOTt0IGJlIGlubGluZWQuIFRoYXQmIzM5O3MgYSBnb29kIHNpZ24uIExldCYjMzk7cyBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbHRlcm5hdGl2ZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZsdXNoLCBhcyB0aGUgaW5zdHJ1Y3Rpb25zIHN1Z2dlc3RlZC4gQ2hlY2tpbmcgYGlwX3NldF9kZXN0cm95YCB3b24mIzM5O3Qgd29yaywgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgY2hhbmdlcyBgZmx1c2hgLiBJIG5lZWQgdG8gcmV2aWV3IGBpcF9zZXRfY29yZS5jYCBmb3IgYW55IHJlbGF0ZWQsIG5vbi1zdGF0aWMgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMwNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMxMjpzdGF0aWMgaW50IGlwX3NldF9mbHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTMtXHRcdFx0Y29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cdFx0XHRpZiAocylcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzI2Olx0XHRcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjUtXHRbSVBTRVRfQ01EX0ZMVVNIXVx0PSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE2NjpcdFx0LmNhbGxcdFx0PSBpcF9zZXRfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ny1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX01VVEVYLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjU2MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIElQIFNldCBGbHVzaCBPcHRpbWl6YXRpb24qKgoKT2theSwgaGVyZSYjMzk7cyBob3cgSSYjMzk7bSBhcHByb2FjaGluZyB0aGlzLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGNoYW5nZXMgcmVsYXRlZCB0byBmbHVzaGluZyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgSVAgc2V0IGZyYW1ld29yay4gSW5pdGlhbGx5LCBJIG5vdGVkIHRoYXQgYGlwX3NldF9mbHVzaGAgaXMgc3RhdGljIGJ1dCB1c2VkIGFzIGEgY2FsbGJhY2ssIHdoaWNoIGlzIGZpbmUgaW4gcHJpbmNpcGxlLiBNeSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBuZXRsaW5rIG1lc3NhZ2VzIGluIG5ldGZpbHRlciBpcyBgbmZuZXRsaW5rX3Jjdl9tc2dgLCBidXQgZm9yIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLCBgaXBfc2V0X2ZsdXNoYCBpcyB0aGUgbW9yZSByZWxldmFudCBwb2ludC4gSSBjaGVja2VkIGlmIGBpcF9zZXRfZmx1c2hgIGlzIGV4cG9ydGVkIOKAkyBpdCYjMzk7cyBub3QuIEkgY29uc2lkZXJlZCBvdGhlciBmbHVzaCBmdW5jdGlvbnMgbGlrZSBgbGlzdF9zZXRfZmx1c2hgIGFuZCBgbXR5cGVfZmx1c2hgLCBidXQgdGhleSYjMzk7cmUgYWxzbyBzdGF0aWMuIFNpbmNlIGBpcF9zZXRfZmx1c2hgIGlzIGRpcmVjdGx5IHJlbGV2YW50LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGl0LiBBbmQsIHNpbmNlIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgaXBfc2V0X2JpdG1hcF9nZW4uaGAgYW5kIGBpcF9zZXRfbGlzdF9zZXQuY2AsIEkmIzM5O2xsIHByaW9yaXRpemUgaW5jbHVkaW5nIHRoZSBjb25maWdzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBtb2R1bGVzLgoKVGhlIGd1aWRhbmNlIHN1Z2dlc3RzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cy4gQWx0aG91Z2ggYGlwX3NldF9mbHVzaGAgaXMgc3RhdGljLCBiZWNhdXNlIGl0JiMzOTtzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IGNhbiYjMzk7dCBiZSBpbmxpbmVkLCBzbyBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtYWtlcyBpdCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBBbHNvLCBhbHRob3VnaCBgbXR5cGVfZmx1c2hgIGlzIHVzZWQgaW4gdGhlIGBpcF9zZXRfaGFzaF9nZW4uaGAgYW5kIHRoZSBwYXRjaCB0b3VjaGVzIHRoYXQgaGVhZGVyLCB0aGUgcGF0Y2ggb25seSBtb2RpZmllcyBgaXBfc2V0X2JpdG1hcF9nZW4uaGAgYW5kIGBpcF9zZXRfbGlzdF9zZXQuY2AsIHNvIGBJUF9TRVRfSEFTSF8qYCBjb25maWdzIGFyZSBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciB0aGlzIHNwZWNpZmljIHBhdGNoLgoKSSYjMzk7dmUgZGV0ZXJtaW5lZCB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMuIEl0IHJlbW92ZXMgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpdCByZXBsYWNlcyB0aGVtIHdpdGggYSBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgYXNzZXJ0aW9uIHRvIGNoZWNrIHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBhbHJlYWR5IHplcm8uIFRoaXMgaXMgYW4gaW1wb3J0YW50IGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgcmVtb3ZlcyBzdGF0ZS1yZXNldHRpbmcgYXNzaWdubWVudHMsIG1lYW5pbmcgdGhhdCBpZiB0aGVyZSBpcyBhIGJ1ZyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IGNvcnJlY3RseSBkZWNyZW1lbnRlZCwgaXQgd2lsbCBub3cgdHJpZ2dlciBhIHdhcm5pbmcuIEZ1enppbmcgdGhpcyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBjb3VudHMgYXJlIGNvcnJlY3RseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuCgpUaGVyZWZvcmUsIGZvciBteSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24sIEkmIzM5O2xsIG5lZWQ6CgpDb25maWdzOgoqICAgYElORVRgCiogICBgTkVURklMVEVSYAoqICAgYElQX1NFVGAKKiAgIGBJUF9TRVRfQklUTUFQX0lQYAoqICAgYElQX1NFVF9CSVRNQVBfSVBNQUNgCiogICBgSVBfU0VUX0JJVE1BUF9QT1JUYAoqICAgYElQX1NFVF9MSVNUX1NFVGAKCkZvY3VzIFN5bWJvbDoKKiAgIGBpcF9zZXRfZmx1c2hgCgpJJiMzOTttIGNvbmZpZGVudCB0aGF0IGBpcF9zZXRfZmx1c2hgIGlzIHRoZSBjb3JyZWN0IHN5bWJvbCB0byB0YXJnZXQgZm9yIGZvY3VzZWQgZnV6emluZyBpbiB0aGlzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMwNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMxMjpzdGF0aWMgaW50IGlwX3NldF9mbHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTMtXHRcdFx0Y29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cdFx0XHRpZiAocylcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzI2Olx0XHRcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjUtXHRbSVBTRVRfQ01EX0ZMVVNIXVx0PSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE2NjpcdFx0LmNhbGxcdFx0PSBpcF9zZXRfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ny1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX01VVEVYLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODM4OAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVAgU2V0IEZsdXNoaW5nIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBJJiMzOTttIHByZXR0eSBzdXJlIGBpcF9zZXRfZmx1c2hgIGlzIHRoZSBtYWluIHN5bWJvbCB0byBmb2N1cyBvbiBoZXJlLiBCdXQgaG9sZCBvbiBhIHNlY29uZOKApiBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gSXQgc2VlbXMgdGhlIGFjdHVhbCBmdW5jdGlvbnMgZGlyZWN0bHkgbW9kaWZpZWQgYXJlIGBsaXN0X3NldF9mbHVzaGAgYW5kIGBtdHlwZV9mbHVzaGAuIEFoYSEgTm93IEkgcmVtZW1iZXI7IGBtdHlwZV9mbHVzaGAgaXMgYSBtYWNybyBvciB0ZW1wbGF0ZS4gVGhhdCBtZWFucyBpdCBsaWtlbHkgZXhwYW5kcyB0byBkaWZmZXJlbnQgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBkYXRhIHR5cGVzIGludm9sdmVkLiBJbiB0aGlzIGNhc2UsIHRoYXQgZXhwYW5zaW9uIGxvb2tzIGxpa2UgaXQgcmVzdWx0cyBpbiBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGFuZCBgYml0bWFwX3BvcnRfZmx1c2hgLiBOb3csIG15IG5leHQgbW92ZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBnZW5lcmF0ZWQgc3ltYm9scywgdGhlc2UgZGVyaXZlZCBmdW5jdGlvbnMsIGFjdHVhbGx5IGV4aXN0IGluIHRoZSBjb21waWxlZCBjb2RlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiB0aGUgY2hhbmdlLiBMZXQgbWUgcXVpY2tseSBjb25maXJtIHRoZWlyIGV4aXN0ZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiaXRtYXBfaXBfZmx1c2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODY4NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipBbmFseXppbmcgdGhlIGBtdHlwZV9mbHVzaGAgRGVmaW5pdGlvbioqCgpIbW0sIGxldCYjMzk7cyBzZWUuLi4gYG10eXBlX2ZsdXNoYC4gUmlnaHQsIGl0JiMzOTtzIGRlZmluZWQgYXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpYC4gT2theSwgc28gaXQmIzM5O3MgYSBtYWNybywgbm90IGEgZGlyZWN0IHZhcmlhYmxlIG9yIGZ1bmN0aW9uLiBOb3csIHdoYXQgZG9lcyBgSVBTRVRfVE9LRU5gIGFjdHVhbGx5ICpkbyo/IEkgbmVlZCB0byBjaGVjayBpdHMgZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIHdoYXQgYG10eXBlX2ZsdXNoYCByZWFsbHkgcmVwcmVzZW50cy4gVGhpcyBpcyBjcnVjaWFsIGZvciB0cmFjaW5nIHRoZSBjb2RlIGFuZCBlbnN1cmluZyBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSB1bmRlcmx5aW5nIGltcGxpY2F0aW9ucyBvciBwb3RlbnRpYWwgcGl0ZmFsbHMgaW4gaG93IHRoaXMgaXMgaW1wbGVtZW50ZWQuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIG1hY3JvIGRlZmluaXRpb24gaXRzZWxmLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIElQU0VUX1RPS0VOJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oPTUyMz1uZl9pbmV0X2FkZHJfbWFza19pbnBsYWNlKHVuaW9uIG5mX2luZXRfYWRkciAqYTEsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmgtNTQwLSNkZWZpbmUgSVBTRVRfQ09OQ0FUKGEsIGIpXHRcdGEjI2JcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oOjU0MTojZGVmaW5lIElQU0VUX1RPS0VOKGEsIGIpXHRcdElQU0VUX0NPTkNBVChhLCBiKVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmgtNTQyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTAzOQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgTWFjcm8tR2VuZXJhdGVkIFN5bWJvbHMqKgoKT2theSwgc28gYElQU0VUX1RPS0VOKGJpdG1hcF9pcCwgX2ZsdXNoKWAgZXhwYW5kcyB0byBgYml0bWFwX2lwX2ZsdXNoYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIHdhcyBwdXp6bGVkIHdoeSBgZ2l0IGdyZXBgIHdhc24mIzM5O3QgZmluZGluZyBgYml0bWFwX2lwX2ZsdXNoYC4gT2YgY291cnNlLCBpdCYjMzk7cyBtYWNyby1nZW5lcmF0ZWQhIFRoZSBzb3VyY2UgY29kZSBkb2VzbiYjMzk7dCBsaXRlcmFsbHkgY29udGFpbiB0aGUgc3RyaW5nICYjMzQ7Yml0bWFwX2lwX2ZsdXNoJiMzNDs7IHRoZSBjb21waWxlciAqY3JlYXRlcyogdGhhdCBzeW1ib2wuCgpSaWdodCwgc28gdG8gdHJhY2UgdGhpcyB0aHJvdWdoLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgZ2VuZXJhdGVkIHN5bWJvbHMuIEkmIzM5O2xsIGFkZCBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGBiaXRtYXBfcG9ydF9mbHVzaGAsIGFuZCBgbGlzdF9zZXRfZmx1c2hgIHRvIG15IGxpc3Qgb2YgZm9jdXMgc3ltYm9scy4gTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhhdCBgbGlzdF9zZXRfZmx1c2hgIGlzIGFsc28gY29ycmVjdGx5IGdlbmVyYXRlZCBhbmQgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpc3Rfc2V0X2ZsdXNoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDE1PXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQxNjpsaXN0X3NldF9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxNy17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NDM9bGlzdF9zZXRfY2FuY2VsX2djKHN0cnVjdCBpcF9zZXQgKnNldClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU1MC1cdC8qIEZsdXNoIGxpc3QgdG8gZHJvcCByZWZlcmVuY2VzIHRvIG90aGVyIGlwc2V0cyAqL1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NTE6XHRsaXN0X3NldF9mbHVzaChzZXQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTItfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBzZXRfdmFyaWFudCA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2Mi1cdC5kZXN0cm95ID0gbGlzdF9zZXRfZGVzdHJveSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTYzOlx0LmZsdXNoXHQ9IGxpc3Rfc2V0X2ZsdXNoLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NjQtXHQuaGVhZFx0PSBsaXN0X3NldF9oZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcxOAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFJlYXNvbmluZyBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBsaXN0X3NldF9mbHVzaGAgaXMsIGluIGZhY3QsIHByZXNlbnQgaW4gdGhlIGNvZGViYXNlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSByZWxhdGVkIGZsdXNoIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIG15IHByaW1hcnkgZm9jdXMgZm9yIHRoaXMgbmV4dCBhbmFseXNpcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGVzZSBzeW1ib2xzIHRvIG15IG1lbnRhbCAoYW5kIG5vdyBhY3R1YWwpIGxpc3Q6IGBpcF9zZXRfZmx1c2hgLCBgbGlzdF9zZXRfZmx1c2hgLCBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGFuZCBgYml0bWFwX3BvcnRfZmx1c2hgLiBNeSBsb2dpYyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlc2UgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IHBhcnQgb2YgdGhlIHJlbGF0ZWQgZmx1c2ggbWVjaGFuaXNtcy4KCk5vdywgYXMgYSByZW1pbmRlciB0byBteXNlbGYsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBrZWVwaW5nIHRyYWNrIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhpcyBzZXQgb2Ygb3BlcmF0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIGluIG1pbmQ6IGBJTkVUYCwgYE5FVEZJTFRFUmAsIGBJUF9TRVRgLCBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYElQX1NFVF9CSVRNQVBfUE9SVGAsIGFuZCBgSVBfU0VUX0xJU1RfU0VUYC4KCkhvbGQgb24sIEkgc2VlIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFYCB1c2VkLiBTaW5jZSBJJiMzOTttIGJlaW5nIHRob3JvdWdoLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoYXQgaGFzIGFueSBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCYjMzk7cyBsb29rIHRoYXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RFQlVHX05FVF9XQVJOX09OX09OQ0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkwNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM9OTgyPXN0YXRpYyBpbnQgZ3ZlX3J4X2NvbXBsZXRlX3JzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTEwMjYtXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM6MTAyNzpcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX2ZyYWdfc2l6ZShmcmFnKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0xMDI4LVx0XHRza2JfZnJhZ19vZmZfYWRkKGZyYWcsIGhkcl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L21hY3NlYy5jPTEwMTE9c3RhdGljIGVudW0gcnhfaGFuZGxlcl9yZXN1bHQgaGFuZGxlX25vdF9tYWNzZWMoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9tYWNzZWMuYy0xMDQ4LVx0XHRcdFx0ICovXG5kcml2ZXJzL25ldC9tYWNzZWMuYzoxMDQ5Olx0XHRcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghb3BzLVx1MDAzZXJ4X3VzZXNfbWRfZHN0KTtcbmRyaXZlcnMvbmV0L21hY3NlYy5jLTEwNTAtXHRcdFx0XHRyeF9zYyA9IGZpbmRfcnhfc2MoXHUwMDI2bWFjc2VjLVx1MDAzZXNlY3ksXG4tLVxuZHJpdmVycy9uZXQvb3Zwbi9jcnlwdG9fYWVhZC5jPTU1PXN0YXRpYyB1bnNpZ25lZCBpbnQgb3Zwbl9hZWFkX2NyeXB0b190bXBfc2l6ZShzdHJ1Y3QgY3J5cHRvX2FlYWQgKnRmbSxcbi0tXG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmMtNTktXG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmM6NjA6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNyeXB0b19hZWFkX2l2c2l6ZSh0Zm0pICE9IE9WUE5fTk9OQ0VfU0laRSk7XG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmMtNjEtXG4tLVxuZHJpdmVycy9uZXQvb3Zwbi9pby5jPTMxMj1zdGF0aWMgYm9vbCBvdnBuX2VuY3J5cHRfb25lKHN0cnVjdCBvdnBuX3BlZXIgKnBlZXIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTMyNC1cdGlmICh1bmxpa2VseSghb3Zwbl9wZWVyX2hvbGQocGVlcikpKSB7XG5kcml2ZXJzL25ldC9vdnBuL2lvLmM6MzI1Olx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTMyNi1cdFx0b3Zwbl9jcnlwdG9fa2V5X3Nsb3RfcHV0KGtzKTtcbi0tXG5kcml2ZXJzL25ldC9vdnBuL3RjcC5jPTUxMT1pbnQgb3Zwbl90Y3Bfc29ja2V0X2F0dGFjaChzdHJ1Y3Qgb3Zwbl9zb2NrZXQgKm92cG5fc29jayxcbi0tXG5kcml2ZXJzL25ldC9vdnBuL3RjcC5jLTUzNy1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L292cG4vdGNwLmM6NTM4Olx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xuZHJpdmVycy9uZXQvb3Zwbi90Y3AuYy01MzktXHRcdGdvdG8gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzUwPXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjQ0MS1cdFx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNDQyOlx0XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjQ0My1cdFx0XHRnb3RvIGRyb3A7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yNzEzPXN0cnVjdCBuZXRkZXZfcXVldWUgKm5ldGRldl9nZXRfdHhfcXVldWUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI3MTUte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNzE2Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShpbmRleCBcdTAwM2U9IGRldi1cdTAwM2VudW1fdHhfcXVldWVzKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjcxNy1cdHJldHVybiBcdTAwMjZkZXYtXHUwMDNlX3R4W2luZGV4XTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTExNjg9c3RhdGljIGlubGluZSB2b2lkIHNrYl9kc3RfY2hlY2tfdW5zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTE2OS17XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjExNzA6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKChza2ItXHUwMDNlX3NrYl9yZWZkc3QgXHUwMDI2IFNLQl9EU1RfUFRSTUFTSykgXHUwMDI2XHUwMDI2XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTExNzEtXHRcdFx0ICAgICAgICEoc2tiLVx1MDAzZV9za2JfcmVmZHN0IFx1MDAyNiBTS0JfRFNUX05PUkVGKSk7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0yNjkwPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHN0cnVjdCBza19idWZmICpza2IsIGludCBpLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjY5My17XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjI2OTQ6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNpemUgXHUwMDNlIHRydWVzaXplKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjY5NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTI4MjU9c3RhdGljIGlubGluZSB2b2lkICpfX3NrYl9wdXNoKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4MjYte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoyODI3Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXHUwMDNlIElOVF9NQVgpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODI4LVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODI5LVx0c2tiLVx1MDAzZWRhdGEgLT0gbGVuO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoyODMwOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXHUwMDNlZGF0YSBcdTAwM2Mgc2tiLVx1MDAzZWhlYWQpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODMxLVx0c2tiLVx1MDAzZWxlbiAgJiM0Mzs9IGxlbjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTI4MzY9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkICpfX3NrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4Mzcte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoyODM4Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXHUwMDNlIElOVF9NQVgpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODM5LVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9Mjg2Mj1wc2tiX21heV9wdWxsX3JlYXNvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODYzLXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6Mjg2NDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobGVuIFx1MDAzZSBJTlRfTUFYKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjg2NS1cdHNrYl9taWdodF9yZWFsbG9jKHNrYik7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDAwPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfbWFjX2xlbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzAwMi1cdGlmICghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKSB7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjMwMDM6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwMDQtXHRcdHNrYi1cdTAwM2VtYWNfbGVuID0gMDtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMwMjE9c3RhdGljIGlubGluZSB2b2lkIHNrYl9yZXNldF9pbm5lcl90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDI0LVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMDI1Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXHUwMDNlaW5uZXJfdHJhbnNwb3J0X2hlYWRlcikpb2Zmc2V0KTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzAyNi1cdHNrYi1cdTAwM2Vpbm5lcl90cmFuc3BvcnRfaGVhZGVyID0gb2Zmc2V0O1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MzA0MT1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3Jlc2V0X2lubmVyX25ldHdvcmtfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDQ0LVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMDQ1Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXHUwMDNlaW5uZXJfbmV0d29ya19oZWFkZXIpKW9mZnNldCk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwNDYtXHRza2ItXHUwMDNlaW5uZXJfbmV0d29ya19oZWFkZXIgPSBvZmZzZXQ7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDY2PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfaW5uZXJfbWFjX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA2OS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA3MDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uob2Zmc2V0ICE9ICh0eXBlb2Yoc2tiLVx1MDAzZWlubmVyX21hY19oZWFkZXIpKW9mZnNldCk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwNzEtXHRza2ItXHUwMDNlaW5uZXJfbWFjX2hlYWRlciA9IG9mZnNldDtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMwODU9c3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfdHJhbnNwb3J0X2hlYWRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDg2LXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA4NzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNrYl90cmFuc3BvcnRfaGVhZGVyX3dhc19zZXQoc2tiKSk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwODgtXHRyZXR1cm4gc2tiLVx1MDAzZWhlYWQgJiM0Mzsgc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXI7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDkxPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA5NC1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA5NTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uob2Zmc2V0ICE9ICh0eXBlb2Yoc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKW9mZnNldCk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwOTYtXHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciA9IG9mZnNldDtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMxMzQ9c3RhdGljIGlubGluZSB2b2lkIHNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzEzNy1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzEzODpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uob2Zmc2V0ICE9ICh0eXBlb2Yoc2tiLVx1MDAzZW5ldHdvcmtfaGVhZGVyKSlvZmZzZXQpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMTM5LVx0c2tiLVx1MDAzZW5ldHdvcmtfaGVhZGVyID0gb2Zmc2V0O1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MzE0OD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl9tYWNfaGVhZGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMxNDkte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMTUwOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE1MS1cdHJldHVybiBza2ItXHUwMDNlaGVhZCAmIzQzOyBza2ItXHUwMDNlbWFjX2hlYWRlcjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMxNTk9c3RhdGljIGlubGluZSB1MzIgc2tiX21hY19oZWFkZXJfbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMxNjAte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMTYxOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE2Mi1cdHJldHVybiBza2ItXHUwMDNlbmV0d29ya19oZWFkZXIgLSBza2ItXHUwMDNlbWFjX2hlYWRlcjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMxNzA9c3RhdGljIGlubGluZSB2b2lkIHNrYl9yZXNldF9tYWNfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMTczLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMTc0Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXHUwMDNlbWFjX2hlYWRlcikpb2Zmc2V0KTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE3NS1cdHNrYi1cdTAwM2VtYWNfaGVhZGVyID0gb2Zmc2V0O1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MzI0MT1zdGF0aWMgaW5saW5lIHUzMiBza2JfbmV0d29ya19oZWFkZXJfbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMyNDIte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMjQzOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChza2IpKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzI0NC1cdHJldHVybiBza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciAtIHNrYi1cdTAwM2VuZXR3b3JrX2hlYWRlcjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTQ2NTg9c3RhdGljIGlubGluZSB2b2lkIHNrYl9wb3N0cHVsbF9kYXRhX21vdmUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2NjEte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo0NjYyOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXHUwMDNlIElOVF9NQVgpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00NjYzLVx0c2tiX2RhdGFfbW92ZShza2IsIGxlbiwgbik7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00Njc0PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcG9zdHB1c2hfZGF0YV9tb3ZlKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00Njc3LXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDY3ODpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobGVuIFx1MDAzZSBJTlRfTUFYKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY3OS1cdHNrYl9kYXRhX21vdmUoc2tiLCAtbGVuLCBuKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTUzNDM9c3RhdGljIGlubGluZSB2b2lkIHNrYl9jaGVja3N1bV9ub25lX2Fzc2VydChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01MzQ0LXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NTM0NTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVx1MDAzZWlwX3N1bW1lZCAhPSBDSEVDS1NVTV9OT05FKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTM0Ni19XG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fdnNvY2suaD01MD1zdGF0aWMgaW5saW5lIHZvaWQgdmlydGlvX3Zzb2NrX3NrYl9wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxlbilcbmluY2x1ZGUvbGludXgvdmlydGlvX3Zzb2NrLmgtNTEte1xuaW5jbHVkZS9saW51eC92aXJ0aW9fdnNvY2suaDo1MjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVx1MDAzZWxlbik7XG5pbmNsdWRlL2xpbnV4L3ZpcnRpb192c29jay5oLTUzLVxuLS1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaD0zNDA9c3RhdGljIGlubGluZSB2b2lkIGZpYjZfaW5mb19yZWxlYXNlKHN0cnVjdCBmaWI2X2luZm8gKmY2aSlcbi0tXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMzQyLVx0aWYgKGY2aSBcdTAwMjZcdTAwMjYgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmY2aS1cdTAwM2VmaWI2X3JlZikpIHtcbmluY2x1ZGUvbmV0L2lwNl9maWIuaDozNDM6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNmY2aS1cdTAwM2VnY19saW5rKSk7XG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMzQ0LVx0XHRjYWxsX3JjdV9odXJyeShcdTAwMjZmNmktXHUwMDNlcmN1LCBmaWI2X2luZm9fZGVzdHJveV9yY3UpO1xuLS1cbmluY2x1ZGUvbmV0L25ldF9kZWJ1Zy5oPTExND1kbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmgtMTUxLSNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19ORVQpXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaDoxNTI6I2RlZmluZSBERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNvbmQpICgodm9pZClXQVJOX09OX09OQ0UoY29uZCkpXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaC0xNTMtI2RlZmluZSBERUJVR19ORVRfV0FSTl9PTkNFKGNvbmQsIGZvcm1hdC4uLikgKCh2b2lkKVdBUk5fT05DRShjb25kLCBmb3JtYXQpKVxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmgtMTU0LSNlbHNlXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaDoxNTU6I2RlZmluZSBERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNvbmQpIEJVSUxEX0JVR19PTl9JTlZBTElEKGNvbmQpXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaC0xNTYtI2RlZmluZSBERUJVR19ORVRfV0FSTl9PTkNFKGNvbmQsIGZvcm1hdC4uLikgQlVJTERfQlVHX09OX0lOVkFMSUQoY29uZClcbi0tXG5pbmNsdWRlL25ldC9uZXRsaW5rLmg9MjI2MT1zdGF0aWMgaW5saW5lIGludCBubGFfbmVzdF9lbmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sYXR0ciAqc3RhcnQpXG4tLVxuaW5jbHVkZS9uZXQvbmV0bGluay5oLTIyNjQtXG5pbmNsdWRlL25ldC9uZXRsaW5rLmg6MjI2NTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoZGlmZiBcdTAwM2UgVTE2X01BWCk7XG5pbmNsdWRlL25ldC9uZXRsaW5rLmgtMjI2Ni1cdHN0YXJ0LVx1MDAzZW5sYV9sZW4gPSBkaWZmO1xuLS1cbmluY2x1ZGUvbmV0L25ldG1lbS5oPTE3MT1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfaW92ICpuZXRtZW1fdG9fbmV0X2lvdihuZXRtZW1fcmVmIG5ldG1lbSlcbi0tXG5pbmNsdWRlL25ldC9uZXRtZW0uaC0xNzYtXG5pbmNsdWRlL25ldC9uZXRtZW0uaDoxNzc6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHRydWUpO1xuaW5jbHVkZS9uZXQvbmV0bWVtLmgtMTc4LVx0cmV0dXJuIE5VTEw7XG4tLVxuaW5jbHVkZS9uZXQvbmV0bWVtLmg9MjEyPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBuZXRtZW1fcGZuX3RyYWNlKG5ldG1lbV9yZWYgbmV0bWVtKVxuLS1cbmluY2x1ZGUvbmV0L25ldG1lbS5oLTIzMi0oe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG5pbmNsdWRlL25ldC9uZXRtZW0uaDoyMzM6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFwYWdlX3Bvb2xfcGFnZV9pc19wcChwKSk7XHRcdFxcXG5pbmNsdWRlL25ldC9uZXRtZW0uaC0yMzQtXHRfX3BwX3BhZ2VfdG9fbm1kZXNjKHApO1x0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9uZXQvcmVxdWVzdF9zb2NrLmg9MTI4PXN0YXRpYyBpbmxpbmUgdm9pZCByZXFza19mcmVlKHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbmluY2x1ZGUvbmV0L3JlcXVlc3Rfc29jay5oLTEyOS17XG5pbmNsdWRlL25ldC9yZXF1ZXN0X3NvY2suaDoxMzA6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHJlZmNvdW50X3JlYWQoXHUwMDI2cmVxLVx1MDAzZXJza19yZWZjbnQpICE9IDApO1xuaW5jbHVkZS9uZXQvcmVxdWVzdF9zb2NrLmgtMTMxLVx0X19yZXFza19mcmVlKHJlcSk7XG4tLVxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaD05MDg9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcWRpc2NfcGt0X3NlZ3MoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oLTkxMS1cbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg6OTEyOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShwa3Rfc2VncyAhPVxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC05MTMtXHRcdFx0KHNrYl9pc19nc28oc2tiKSA/IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vnc29fc2VncyA6IDEpKTtcbi0tXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oPTEyMjY9c3RhdGljIGlubGluZSB2b2lkIHFkaXNjX2RlcXVldWVfZHJvcChzdHJ1Y3QgUWRpc2MgKnEsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC0xMjMwLVxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaDoxMjMxOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghKHEtXHUwMDNlZmxhZ3MgXHUwMDI2IFRDUV9GX0RFUVVFVUVfRFJPUFMpKTtcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg6MTIzMjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UocS1cdTAwM2VmbGFncyBcdTAwMjYgVENRX0ZfTk9MT0NLKTtcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmgtMTIzMy1cbi0tXG5pbmNsdWRlL25ldC9zb2NrLmg9MTgyMT1zdGF0aWMgaW5saW5lIHZvaWQgc29ja19yZWxlYXNlX293bmVyc2hpcChzdHJ1Y3Qgc29jayAqc2spXG5pbmNsdWRlL25ldC9zb2NrLmgtMTgyMi17XG5pbmNsdWRlL25ldC9zb2NrLmg6MTgyMzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNvY2tfb3duZWRfYnlfdXNlcl9ub2NoZWNrKHNrKSk7XG5pbmNsdWRlL25ldC9zb2NrLmgtMTgyNC1cdHNrLVx1MDAzZXNrX2xvY2sub3duZWQgPSAwO1xuLS1cbmluY2x1ZGUvbmV0L3NvY2suaD0yNzk2PXN0YXRpYyBpbmxpbmUgaW50IHNrX2Ryb3BzX3JlYWQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxuLS1cbmluY2x1ZGUvbmV0L3NvY2suaC0yODAwLVx0aWYgKG5kYykge1xuaW5jbHVkZS9uZXQvc29jay5oOjI4MDE6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoYXRvbWljX3JlYWQoXHUwMDI2c2stXHUwMDNlc2tfZHJvcHMpKTtcbmluY2x1ZGUvbmV0L3NvY2suaC0yODAyLVx0XHRyZXR1cm4gbnVtYV9kcm9wX3JlYWQobmRjKTtcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD04MDM9c3RhdGljIGlubGluZSB2b2lkIHRjcF9hZGRfcmVjZWl2ZV9xdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL25ldC90Y3AuaC04MDQte1xuaW5jbHVkZS9uZXQvdGNwLmg6ODA1Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2JfZHN0KHNrYikpO1xuaW5jbHVkZS9uZXQvdGNwLmg6ODA2Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShzZWNwYXRoX2V4aXN0cyhza2IpKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTgwNy1cdF9fc2tiX3F1ZXVlX3RhaWwoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSwgc2tiKTtcbi0tXG5uZXQvY29yZS9kZXYuYz0zNTEwPXN0YXRpYyB1MTYgc2tiX3R4X2hhc2goY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9kZXYuYy0zNTMxLVx0aWYgKHNrYl9yeF9xdWV1ZV9yZWNvcmRlZChza2IpKSB7XG5uZXQvY29yZS9kZXYuYzozNTMyOlx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHFjb3VudCA9PSAwKTtcbm5ldC9jb3JlL2Rldi5jLTM1MzMtXHRcdGhhc2ggPSBza2JfZ2V0X3J4X3F1ZXVlKHNrYik7XG4tLVxubmV0L2NvcmUvZGV2LmM9NDE4NT1zdGF0aWMgaW5saW5lIGludCBfX2Rldl94bWl0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L2NvcmUvZGV2LmMtNDI3Ni1cbm5ldC9jb3JlL2Rldi5jOjQyNzc6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiICE9IGxsaXN0X2VudHJ5KGxsX2xpc3QsXG5uZXQvY29yZS9kZXYuYy00Mjc4LVx0XHRcdFx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZixcbi0tXG5uZXQvY29yZS9kZXYuYz00MzQxPWludCBkZXZfbG9vcGJhY2tfeG1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvY29yZS9kZXYuYy00MzQ3LVx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG5uZXQvY29yZS9kZXYuYzo0MzQ4Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX2RzdChza2IpKTtcbm5ldC9jb3JlL2Rldi5jLTQzNDktXHRza2JfZHN0X2ZvcmNlKHNrYik7XG4tLVxubmV0L2NvcmUvZGV2LmM9NDk2NT1zdGF0aWMgaW5saW5lIHZvaWQgX19fX25hcGlfc2NoZWR1bGUoc3RydWN0IHNvZnRuZXRfZGF0YSAqc2QsXG4tLVxubmV0L2NvcmUvZGV2LmMtNDk5MC11c2VfbG9jYWxfbmFwaTpcbm5ldC9jb3JlL2Rldi5jOjQ5OTE6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNm5hcGktXHUwMDNlcG9sbF9saXN0KSk7XG5uZXQvY29yZS9kZXYuYy00OTkyLVx0bGlzdF9hZGRfdGFpbChcdTAwMjZuYXBpLVx1MDAzZXBvbGxfbGlzdCwgXHUwMDI2c2QtXHUwMDNlcG9sbF9saXN0KTtcbi0tXG5uZXQvY29yZS9kZXYuYz0xMDgwMz1zdGF0aWMgaW50IGRldl9pbmRleF9yZXNlcnZlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlmaW5kZXgpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTA4MDctXHRpZiAoaWZpbmRleCBcdTAwM2UgSU5UX01BWCkge1xubmV0L2NvcmUvZGV2LmM6MTA4MDg6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5uZXQvY29yZS9kZXYuYy0xMDgwOS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2NvcmUvZHN0X2NhY2hlLmM9Mjg9c3RhdGljIHZvaWQgZHN0X2NhY2hlX3Blcl9jcHVfZHN0X3NldChzdHJ1Y3QgZHN0X2NhY2hlX3BjcHUgKmRzdF9jYWNoZSxcbi0tXG5uZXQvY29yZS9kc3RfY2FjaGUuYy0zMC17XG5uZXQvY29yZS9kc3RfY2FjaGUuYzozMTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWluX3NvZnRpcnEoKSk7XG5uZXQvY29yZS9kc3RfY2FjaGUuYy0zMi1cdGRzdF9yZWxlYXNlKGRzdF9jYWNoZS1cdTAwM2Vkc3QpO1xuLS1cbm5ldC9jb3JlL2RzdF9jYWNoZS5jPTQwPXN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGVfcGVyX2NwdV9nZXQoc3RydWN0IGRzdF9jYWNoZSAqZHN0X2NhY2hlLFxuLS1cbm5ldC9jb3JlL2RzdF9jYWNoZS5jLTQ0LVxubmV0L2NvcmUvZHN0X2NhY2hlLmM6NDU6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFpbl9zb2Z0aXJxKCkpO1xubmV0L2NvcmUvZHN0X2NhY2hlLmMtNDYtXHRkc3QgPSBpZHN0LVx1MDAzZWRzdDtcbi0tXG5uZXQvY29yZS9mbG93X2Rpc3NlY3Rvci5jPTEwNTc9Ym9vbCBfX3NrYl9mbG93X2Rpc3NlY3QoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmMtMTEzMC1cbm5ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmM6MTEzMTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIW5ldCk7XG5uZXQvY29yZS9mbG93X2Rpc3NlY3Rvci5jLTExMzItXHRpZiAobmV0KSB7XG4tLVxubmV0L2NvcmUvZ3JvLmM9NDI4PXN0YXRpYyB2b2lkIGdyb19wdWxsX2Zyb21fZnJhZzAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGdyb3cpXG4tLVxubmV0L2NvcmUvZ3JvLmMtNDMxLVxubmV0L2NvcmUvZ3JvLmM6NDMyOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXHUwMDNlZW5kIC0gc2tiLVx1MDAzZXRhaWwgXHUwMDNjIGdyb3cpO1xubmV0L2NvcmUvZ3JvLmMtNDMzLVxuLS1cbm5ldC9jb3JlL2x3dHVubmVsLmM9NDMxPWludCBsd3R1bm5lbF9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL2x3dHVubmVsLmMtNDM3LVxubmV0L2NvcmUvbHd0dW5uZWwuYzo0Mzg6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFpbl9zb2Z0aXJxKCkpO1xubmV0L2NvcmUvbHd0dW5uZWwuYy00MzktXG4tLVxubmV0L2NvcmUvbmVpZ2hib3VyLmM9NjM9c3RhdGljIHN0cnVjdCBobGlzdF9oZWFkICpuZWlnaF9nZXRfZGV2X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBmYW1pbHkpXG4tLVxubmV0L2NvcmUvbmVpZ2hib3VyLmMtNjgtXHRkZWZhdWx0OlxubmV0L2NvcmUvbmVpZ2hib3VyLmM6Njk6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5uZXQvY29yZS9uZWlnaGJvdXIuYy03MC1cdFx0ZmFsbHRocm91Z2g7IC8qIHRvIGF2b2lkIHBhbmljIGJ5IG51bGwtcHRyLWRlcmVmICovXG4tLVxubmV0L2NvcmUvbmVpZ2hib3VyLmM9NDYxPXN0YXRpYyBpbnQgX19uZWlnaF9pZmRvd24oc3RydWN0IG5laWdoX3RhYmxlICp0YmwsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmVpZ2hib3VyLmMtNDY3LVx0fSBlbHNlIHtcbm5ldC9jb3JlL25laWdoYm91ci5jOjQ2ODpcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2lwX3Blcm0pO1xubmV0L2NvcmUvbmVpZ2hib3VyLmMtNDY5LVx0XHRuZWlnaF9mbHVzaF90YWJsZSh0YmwpO1xuLS1cbm5ldC9jb3JlL25ldHBvbGwuYz01NDc9aW50IG5ldHBvbGxfc2V0dXAoc3RydWN0IG5ldHBvbGwgKm5wKVxuLS1cbm5ldC9jb3JlL25ldHBvbGwuYy02MTktcHV0OlxubmV0L2NvcmUvbmV0cG9sbC5jOjYyMDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobnAtXHUwMDNlZGV2KTtcbm5ldC9jb3JlL25ldHBvbGwuYy02MjEtXHRpZiAoaXBfb3ZlcndyaXR0ZW4pXG4tLVxubmV0L2NvcmUvcnRuZXRsaW5rLmM9MzE3PXN0YXRpYyB2b2lkIHJ0bmxfbmV0c19hZGQoc3RydWN0IHJ0bmxfbmV0cyAqcnRubF9uZXRzLCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzIwLVxubmV0L2NvcmUvcnRuZXRsaW5rLmM6MzIxOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShydG5sX25ldHMtXHUwMDNlbGVuID09IEFSUkFZX1NJWkUocnRubF9uZXRzLVx1MDAzZW5ldCkpO1xubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzIyLVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTY3ND1zdHJ1Y3Qgc2tfYnVmZiAqX19hbGxvY19za2IodW5zaWduZWQgaW50IHNpemUsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTczMy1cdFx0QlVJTERfQlVHX09OKFNLQl9GQ0xPTkVfVU5BVkFJTEFCTEUgIT0gMCk7XG5uZXQvY29yZS9za2J1ZmYuYzo3MzQ6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVx1MDAzZWZjbG9uZSAhPSBTS0JfRkNMT05FX1VOQVZBSUxBQkxFKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTczNS1cdFx0c2tiLVx1MDAzZWZjbG9uZSB8PSBTS0JfRkNMT05FX09SSUc7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9ODM4PXN0cnVjdCBza19idWZmICpuYXBpX2FsbG9jX3NrYihzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIHVuc2lnbmVkIGludCBsZW4pXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtODQ1LVxubmV0L2NvcmUvc2tidWZmLmM6ODQ2Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaW5fc29mdGlycSgpKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTg0Ny1cdGxlbiAmIzQzOz0gTkVUX1NLQl9QQUQgJiM0MzsgTkVUX0lQX0FMSUdOO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTg5Nz12b2lkIHNrYl9jb2FsZXNjZV9yeF9mcmFnKHN0cnVjdCBza19idWZmICpza2IsIGludCBpLCBpbnQgc2l6ZSxcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy05MDEtXG5uZXQvY29yZS9za2J1ZmYuYzo5MDI6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNpemUgXHUwMDNlIHRydWVzaXplKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTkwMy1cbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xMTY5PXZvaWQgc2tiX3JlbGVhc2VfaGVhZF9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTExNzItXHRpZiAoc2tiLVx1MDAzZWRlc3RydWN0b3IpIHtcbm5ldC9jb3JlL3NrYnVmZi5jOjExNzM6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoaW5faGFyZGlycSgpKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTExNzQtI2lmZGVmIENPTkZJR19JTkVUXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTIxNz1ib29sIF9fc2tfc2tiX3JlYXNvbl9kcm9wKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xMjIyLVxubmV0L2NvcmUvc2tidWZmLmM6MTIyMzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UocmVhc29uID09IFNLQl9OT1RfRFJPUFBFRF9ZRVQgfHxcbm5ldC9jb3JlL3NrYnVmZi5jLTEyMjQtXHRcdFx0ICAgICAgIHUzMl9nZXRfYml0cyhyZWFzb24sXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTUxOT12b2lkIG5hcGlfY29uc3VtZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGJ1ZGdldClcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xNTI1LVxubmV0L2NvcmUvc2tidWZmLmM6MTUyNjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWluX3NvZnRpcnEoKSk7XG5uZXQvY29yZS9za2J1ZmYuYy0xNTI3LVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTQyNzQ9aW50IHNrYl9zaGlmdChzdHJ1Y3Qgc2tfYnVmZiAqdGd0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgc2hpZnRsZW4pXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNDI4NS1cbm5ldC9jb3JlL3NrYnVmZi5jOjQyODY6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHRndC1cdTAwM2VwcF9yZWN5Y2xlICE9IHNrYi1cdTAwM2VwcF9yZWN5Y2xlKTtcbm5ldC9jb3JlL3NrYnVmZi5jOjQyODc6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9jbXBfZGVjcnlwdGVkKHRndCwgc2tiKSk7XG5uZXQvY29yZS9za2J1ZmYuYy00Mjg4LVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTQ2NzQ9c3RydWN0IHNrX2J1ZmYgKnNrYl9zZWdtZW50X2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy00Njg1LVx0LyogT25seSBza2JfZ3JvX3JlY2VpdmVfbGlzdCBnZW5lcmF0ZWQgc2ticyBhcnJpdmUgaGVyZSAqL1xubmV0L2NvcmUvc2tidWZmLmM6NDY4NjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIShza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGUgXHUwMDI2IFNLQl9HU09fRlJBR0xJU1QpKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTQ2ODctXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNDcwMC1cbm5ldC9jb3JlL3NrYnVmZi5jOjQ3MDE6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobnNrYi1cdTAwM2Vzayk7XG5uZXQvY29yZS9za2J1ZmYuYy00NzAyLVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTczMjU9bm9kZWZlcjpcdGtmcmVlX3NrYl9uYXBpX2NhY2hlKHNrYik7XG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNzMyOC1cbm5ldC9jb3JlL3NrYnVmZi5jOjczMjk6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9kc3Qoc2tiKSk7XG5uZXQvY29yZS9za2J1ZmYuYzo3MzMwOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXHUwMDNlZGVzdHJ1Y3Rvcik7XG5uZXQvY29yZS9za2J1ZmYuYzo3MzMxOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2JfbmZjdChza2IpKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTczMzItXG4tLVxubmV0L2NvcmUvc29jay5jPTI0ODA9c3RydWN0IHNvY2sgKnNrX2Nsb25lKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3QgZ2ZwX3QgcHJpb3JpdHksXG4tLVxubmV0L2NvcmUvc29jay5jLTI1MzQtXHRuZXdzay1cdTAwM2Vza19yZXNlcnZlZF9tZW0gID0gMDtcbm5ldC9jb3JlL3NvY2suYzoyNTM1Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuZXdzay1cdTAwM2Vza19kcm9wX2NvdW50ZXJzKTtcbm5ldC9jb3JlL3NvY2suYy0yNTM2LVx0c2tfZHJvcHNfcmVzZXQobmV3c2spO1xuLS1cbm5ldC9jb3JlL3NvY2suYz0zMjQ0PXZvaWQgX19yZWxlYXNlX3NvY2soc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9jb3JlL3NvY2suYy0zMjU4LVx0XHRcdHByZWZldGNoKG5leHQpO1xubmV0L2NvcmUvc29jay5jOjMyNTk6XHRcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2JfZHN0X2lzX25vcmVmKHNrYikpO1xubmV0L2NvcmUvc29jay5jLTMyNjAtXHRcdFx0c2tiX21hcmtfbm90X29uX2xpc3Qoc2tiKTtcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg9MTI5PXN0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdThfdTMyKHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5oLTEzNi1cdHZhbCA9IG5sYV9nZXRfdTMyKGF0dHIpO1xubmV0L2V0aHRvb2wvbmV0bGluay5oOjEzNzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UodmFsIFx1MDAzZSBVOF9NQVgpO1xubmV0L2V0aHRvb2wvbmV0bGluay5oLTEzOC1cdGlmICgqZHN0ID09IHZhbClcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9NDc1PWludCBpcF9maWJfY2hlY2tfZGVmYXVsdChfX2JlMzIgZ3csIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTQ4Mi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShuaCwgaGVhZCwgbmhfaGFzaCkge1xubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjQ4MzpcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuaC1cdTAwM2VmaWJfbmhfZGV2ICE9IGRldik7XG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtNDg0LVx0XHRpZiAobmgtXHUwMDNlZmliX25oX2d3NCA9PSBndyBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MTkzNj12b2lkIGZpYl9zeW5jX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgb3JpZ19tdHUpXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5NDEtXHRobGlzdF9mb3JfZWFjaF9lbnRyeShuaCwgaGVhZCwgbmhfaGFzaCkge1xubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5NDI6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobmgtXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5NDMtXHRcdGZpYl9uaGNfdXBkYXRlX210dShcdTAwMjZuaC1cdTAwM2VuaF9jb21tb24sIGRldi1cdTAwM2VtdHUsIG9yaWdfbXR1KTtcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MTk1NT1pbnQgZmliX3N5bmNfZG93bl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCwgYm9vbCBmb3JjZSlcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTk3MC1cdFx0QlVHX09OKCFmaS1cdTAwM2VmaWJfbmhzKTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYzoxOTcxOlx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5oLVx1MDAzZWZpYl9uaF9kZXYgIT0gZGV2KTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTcyLVx0XHRpZiAoZmkgPT0gcHJldl9maSlcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MjEwND1pbnQgZmliX3N5bmNfdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgY2hhciBuaF9mbGFncylcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMjEyOS1cdFx0QlVHX09OKCFmaS1cdTAwM2VmaWJfbmhzKTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYzoyMTMwOlx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5oLVx1MDAzZWZpYl9uaF9kZXYgIT0gZGV2KTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0yMTMxLVx0XHRpZiAoZmkgPT0gcHJldl9maSlcbi0tXG5uZXQvaXB2NC9pbmV0X2RpYWcuYz0yMDk9aW50IGluZXRfc2tfZGlhZ19maWxsKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrICppY3NrLFxuLS1cbm5ldC9pcHY0L2luZXRfZGlhZy5jLTIyOS1cdGhhbmRsZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGluZXRfZGlhZ190YWJsZVtwcm90b2NvbF0sIDEpO1xubmV0L2lwdjQvaW5ldF9kaWFnLmM6MjMwOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaGFuZGxlcik7XG5uZXQvaXB2NC9pbmV0X2RpYWcuYy0yMzEtXHRpZiAoIWhhbmRsZXIpXG4tLVxubmV0L2lwdjQvdGNwX2RpYWcuYz0xOTI9c3RhdGljIGludCB0Y3BfdHdza19kaWFnX2ZpbGwoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9kaWFnLmMtMjA4LVx0ciA9IG5sbXNnX2RhdGEobmxoKTtcbm5ldC9pcHY0L3RjcF9kaWFnLmM6MjA5Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRSh0dy1cdTAwM2V0d19zdGF0ZSAhPSBUQ1BfVElNRV9XQUlUKTtcbm5ldC9pcHY0L3RjcF9kaWFnLmMtMjEwLVxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTMwODM9c3RhdGljIHZvaWQgdGNwX210dXBfcHJvYmVfc3VjY2VzcyhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtMzA5Mi1cdGRvX2Rpdih2YWwsIGljc2stXHUwMDNlaWNza19tdHVwLnByb2JlX3NpemUpO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6MzA5MzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoKHUzMil2YWwgIT0gdmFsKTtcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTMwOTQtXHR0Y3Bfc25kX2N3bmRfc2V0KHRwLCBtYXhfdCh1MzIsIDFVLCB2YWwpKTtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MTg0ND1pbnQgdGNwX2ZyYWdtZW50KHN0cnVjdCBzb2NrICpzaywgZW51bSB0Y3BfcXVldWUgdGNwX3F1ZXVlLFxuLS1cbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0xODU3LVxubmV0L2lwdjQvdGNwX291dHB1dC5jOjE4NTg6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9oZWFkbGVuKHNrYikpO1xubmV0L2lwdjQvdGNwX291dHB1dC5jLTE4NTktXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jPTE5Mzk9c3RhdGljIGludCBfX3Bza2JfdHJpbV9oZWFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jLTE5NDMtXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM6MTk0NDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2hlYWRsZW4oc2tiKSk7XG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMTk0NS1cdGVhdCA9IGxlbjtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MjQwMD1zdGF0aWMgaW50IHRzb19mcmFnbWVudChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jLTI0MDctXHQvKiBBbGwgb2YgYSBUU08gZnJhbWUgbXVzdCBiZSBjb21wb3NlZCBvZiBwYWdlZCBkYXRhLiAgKi9cbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoyNDA4Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXHUwMDNlbGVuICE9IHNrYi1cdTAwM2VkYXRhX2xlbik7XG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjQwOS1cbi0tXG5uZXQvaXB2NC91ZHAuYz0yNzYwPWVudW0gc2tiX2Ryb3BfcmVhc29uIHVkcF92NF9lYXJseV9kZW11eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3VkcC5jLTI4MDEtXHRza2ItXHUwMDNlc2sgPSBzaztcbm5ldC9pcHY0L3VkcC5jOjI4MDI6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrX2lzX3JlZmNvdW50ZWQoc2spKTtcbm5ldC9pcHY0L3VkcC5jLTI4MDMtXHRza2ItXHUwMDNlZGVzdHJ1Y3RvciA9IHNvY2tfcGZyZWU7XG4tLVxubmV0L2lwdjYvdWRwLmM9MTIxMj12b2lkIHVkcF92Nl9lYXJseV9kZW11eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3VkcC5jLTEyMzgtXHRza2ItXHUwMDNlc2sgPSBzaztcbm5ldC9pcHY2L3VkcC5jOjEyMzk6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrX2lzX3JlZmNvdW50ZWQoc2spKTtcbm5ldC9pcHY2L3VkcC5jLTEyNDAtXHRza2ItXHUwMDNlZGVzdHJ1Y3RvciA9IHNvY2tfcGZyZWU7XG4tLVxubmV0L21wdGNwL2Zhc3RvcGVuLmM9OT12b2lkIG1wdGNwX2Zhc3RvcGVuX3N1YmZsb3dfc3luYWNrX3NldF9wYXJhbXMoc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcbi0tXG5uZXQvbXB0Y3AvZmFzdG9wZW4uYy01My1cdG1wdGNwX2RhdGFfbG9jayhzayk7XG5uZXQvbXB0Y3AvZmFzdG9wZW4uYzo1NDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc29ja19vd25lZF9ieV91c2VyX25vY2hlY2soc2spKTtcbm5ldC9tcHRjcC9mYXN0b3Blbi5jLTU1LVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTcxMj1zdGF0aWMgYm9vbCBfX21wdGNwX21vdmVfc2tic19mcm9tX3N1YmZsb3coc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy03NjQtXHRcdFx0aWYgKHVubGlrZWx5KG1hcF9yZW1haW5pbmcgXHUwMDNjIGxlbikpIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjc2NTpcdFx0XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy03NjYtXHRcdFx0XHRtcHRjcF9kc3NfY29ycnVwdGlvbihtc2ssIHNzayk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNzY5LVx0XHRcdGlmICh1bmxpa2VseSghZmluKSkge1xubmV0L21wdGNwL3Byb3RvY29sLmM6NzcwOlx0XHRcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSgxKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTc3MS1cdFx0XHRcdG1wdGNwX2Rzc19jb3JydXB0aW9uKG1zaywgc3NrKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0yMjM1PXN0YXRpYyBib29sIG1wdGNwX2Nhbl9zcG9vbF9iYWNrbG9nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGxpc3RfaGVhZCAqc2ticylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yMjQxLVx0ICovXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyMjQyOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShtc2stXHUwMDNlYmFja2xvZ191bmFjY291bnRlZCBcdTAwMjZcdTAwMjYgc2stXHUwMDNlc2tfc29ja2V0IFx1MDAyNlx1MDAyNlxubmV0L21wdGNwL3Byb3RvY29sLmMtMjI0My1cdFx0XHQgICAgICAgbWVtX2Nncm91cF9mcm9tX3NrKHNrKSk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmg9Njk1PXN0YXRpYyBpbmxpbmUgdm9pZCBtcHRjcF9ib3Jyb3dfZndkbWVtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC03MDEtXHQgKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5oOjcwMjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVx1MDAzZWRlc3RydWN0b3IpO1xubmV0L21wdGNwL3Byb3RvY29sLmgtNzAzLVx0c2tfZm9yd2FyZF9hbGxvY19hZGQoc2ssIHNrYi1cdTAwM2V0cnVlc2l6ZSk7XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz05OTQ9c3RhdGljIGJvb2wgc2tiX2lzX2Z1bGx5X21hcHBlZChzdHJ1Y3Qgc29jayAqc3NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmMtMTAwMC1cdGlmICh1bmxpa2VseShza2JfY29uc3VtZWQgXHUwMDNlPSBza2ItXHUwMDNlbGVuKSkge1xubmV0L21wdGNwL3N1YmZsb3cuYzoxMDAxOlx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xubmV0L21wdGNwL3N1YmZsb3cuYy0xMDAyLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg9NzI9bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC03OS1cdHNldC1cdTAwM2VlbGVtZW50cyA9IDA7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6ODA6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGF0b21pYzY0X3JlYWQoXHUwMDI2c2V0LVx1MDAzZWV4dF9zaXplKSBcdTAwM2UgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmgtODEtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDE2PWxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA4NzQKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFYCBtYWNybywgYW5kIGl0JiMzOTtzIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L25ldF9kZWJ1Zy5oYC4gQSBxdWljayBjaGVjayBzaG93cyB0aGF0IGl0JiMzOTtzIGdhdGVkIGJ5IGBDT05GSUdfREVCVUdfTkVUYC4gSWYgdGhhdCYjMzk7cyAqbm90KiBlbmFibGVkLCB0aGUgbWFjcm8gZWZmZWN0aXZlbHkgdHVybnMgaW50byBhIGNvbXBpbGUtdGltZSBjaGVjayB1c2luZyBgQlVJTERfQlVHX09OX0lOVkFMSUQoY29uZClgLiAgU28sIHRoZSBvbmx5IHdheSBJJiMzOTttIGdvaW5nIHRvIGFjdHVhbGx5IHNlZSB0aGlzIHRoaW5nICp3YXJuKiBhdCBydW50aW1lIGlzIGlmIGBDT05GSUdfREVCVUdfTkVUYCBpcyBmbGlwcGVkIG9uLiBSaWdodCwgbWFrZXMgc2Vuc2UuCgpHaXZlbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLCB3aGljaCBpbmNsdWRlcyBgSU5FVGAsIGBORVRGSUxURVJgLCB2YXJpb3VzIGBJUF9TRVRgIG9wdGlvbnMgbGlrZSBiaXRtYXAgYW5kIGxpc3Qgc2V0cywgaXQgc2VlbXMgbGlrZSBuZXR3b3JrIGRlYnVnZ2luZyB3b3VsZCBiZSB2YWx1YWJsZSBoZXJlLiBTbywgSSYjMzk7bSBnb2luZyB0byBhZGQgYERFQlVHX05FVGAgdG8gdGhlIGV4aXN0aW5nIGxpc3Qgb2YgY29uZmlncy4gTWFrZXMgdGhlIG1vc3Qgc2Vuc2UgaW4gdGhpcyBjb250ZXh0LgoKTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUgYERFQlVHX05FVGAgaXMgaW5kZWVkIGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gdGhpcyBlbnZpcm9ubWVudC4gR290dGEgYmUgY2VydGFpbiBiZWZvcmUgSSBnbyBtZXNzaW5nIHdpdGggdGhlIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREVCVUdfTkVUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnLmRlYnVnPTEyPWNvbmZpZyBORVRfTlNfUkVGQ05UX1RSQUNLRVJcbi0tXG5uZXQvS2NvbmZpZy5kZWJ1Zy0yMC1cbm5ldC9LY29uZmlnLmRlYnVnOjIxOmNvbmZpZyBERUJVR19ORVRcbm5ldC9LY29uZmlnLmRlYnVnLTIyLVx0Ym9vbCBcJiMzNDtBZGQgZ2VuZXJpYyBuZXR3b3JraW5nIGRlYnVnXCYjMzQ7XG4tLVxubmV0L0tjb25maWcuZGVidWctMjctXG5uZXQvS2NvbmZpZy5kZWJ1ZzoyODpjb25maWcgREVCVUdfTkVUX1NNQUxMX1JUTkxcbm5ldC9LY29uZmlnLmRlYnVnLTI5LVx0Ym9vbCBcJiMzNDtBZGQgZXh0cmEgcGVyLW5ldG5zIG11dGV4IGluc2lkZSBSVE5MXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNDU4CgkJCQkJCQlvdXRwdXQ6IDI1MgoJCQkJCQkJdGhvdWdodHM6IDU1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRmx1c2ggT3BlcmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBERUJVR19ORVRgIGlzIGluZGVlZCBlbmFibGVkLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSYjMzk7dmUgZ290IHRoZSByZWxldmFudCBjb25maWdzIGhlcmU6IGBJTkVUYCwgYE5FVEZJTFRFUmAsIGBJUF9TRVRgLCBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYElQX1NFVF9CSVRNQVBfUE9SVGAsIGBJUF9TRVRfTElTVF9TRVRgLCBhbmQsIG9mIGNvdXJzZSwgYERFQlVHX05FVGAuCgpOb3csIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGtleSBzeW1ib2xzOiBgaXBfc2V0X2ZsdXNoYCwgYGxpc3Rfc2V0X2ZsdXNoYCwgYGJpdG1hcF9pcF9mbHVzaGAsIGBiaXRtYXBfaXBtYWNfZmx1c2hgLCBhbmQgYGJpdG1hcF9wb3J0X2ZsdXNoYC4gVGhlIGBiaXRtYXBfKl9mbHVzaGAgZnVuY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgYElQU0VUX1RPS0VOKGJpdG1hcF9pcCwgX2ZsdXNoKWAuIEkgbmVlZCB0byBlbnN1cmUgdGhleSYjMzk7cmUgYWNjZXNzaWJsZS4KCkxldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCBgaXBfc2V0X2JpdG1hcF9nZW4uaGAsIEkgZmluZCBgc3RhdGljIHZvaWQgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KWAuIFRoZSBrZXl3b3JkICYjMzQ7c3RhdGljJiMzNDsgaW5pdGlhbGx5IHJhaXNlZCBhIGNvbmNlcm4sIGFzIEkgdGhvdWdodCBpdCBtaWdodCBiZSBpbmxpbmVkIGFuZCB0aGVyZWZvcmUgbm90IHByZXNlbnQgYXMgYSBzZXBhcmF0ZSBzeW1ib2wuIEJ1dCwgZnVydGhlciBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBtdHlwZV92YXJpYW50YCBzdHJ1Y3Q6CgpgYGBjCnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZSA9IHsKCS5rYWR0CT0gbXR5cGVfa2FkdCwKCS51YWR0CT0gbXR5cGVfdWFkdCwKCS5hZHQJPSB7CgkJW0lQU0VUX0FERF0gPSBtdHlwZV9hZGQsCgkJW0lQU0VUX0RFTF0gPSBtdHlwZV9kZWwsCgkJW0lQU0VUX1RFU1RdID0gbXR5cGVfdGVzdCwKCX0sCgkuZGVzdHJveSA9IG10eXBlX2Rlc3Ryb3ksCgkuZmx1c2gJPSBtdHlwZV9mbHVzaCwKLi4uCmBgYAoKVGhhdCBhc3NpZ25tZW50IHRvIGEgZnVuY3Rpb24gcG9pbnRlciBtZWFucyBpdCB3b24mIzM5O3QgYmUgaW5saW5lZC4gU28sIGBiaXRtYXBfaXBfZmx1c2hgLCBgYml0bWFwX2lwbWFjX2ZsdXNoYCwgYW5kIGBiaXRtYXBfcG9ydF9mbHVzaGAgd2lsbCBiZSBwcmVzZW50IGFzIGRpc3RpbmN0IHN5bWJvbHMuIFBlcmZlY3QuIEkmIzM5O2xsIGluY2x1ZGUgdGhlbSBpbiBteSBhbmFseXNpcy4KCk5vdywgbGV0JiMzOTtzIHJlY2FwIG15IHJlYXNvbmluZy4gVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGZsdXNoIG9wZXJhdGlvbnMgZm9yIGJpdG1hcCBhbmQgbGlzdCBJUCBzZXRzLiBFc3NlbnRpYWxseSwgaXQgcmVtb3ZlcyB0aGUgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgd2VyZSByZXNldHRpbmcgZWxlbWVudCBjb3VudHMgYW5kIGV4dGVuc2lvbiBzaXplcyB0byB6ZXJvLiBJbnN0ZWFkLCBpdCBhZGRzIGEgYERFQlVHX05FVF9XQVJOX09OX09OQ0VgIHRvIHZlcmlmeSB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCBtb3ZlcyBhd2F5IGZyb20gc2lsZW50bHkgbWFza2luZyBhbnkgaXNzdWVzIHdoZXJlIGVsZW1lbnQgY291bnRzIGFyZW4mIzM5O3QgcHJvcGVybHkgZGVjcmVtZW50ZWQuIE5vdywgaW5zdGVhZCBvZiBoaWRpbmcgdGhlIGJ1ZywgYSB3YXJuaW5nIHdpbGwgYmUgdHJpZ2dlcmVkLCBhbmQgdGhlIHN0YXRlIHdpbGwgcmVtYWluIG5vbi16ZXJvLiBGdXp6aW5nIGlzIGNyaXRpY2FsIGhlcmUgdG8gdmFsaWRhdGUgdGhhdCBlbGVtZW50IGNvdW50cyBhcmUgYWNjdXJhdGVseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuCgpFdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7SVBfU0VUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9CSVRNQVBfSVAmIzM0OywKICAgICYjMzQ7SVBfU0VUX0JJVE1BUF9JUE1BQyYjMzQ7LAogICAgJiMzNDtJUF9TRVRfQklUTUFQX1BPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0xJU1RfU0VUJiMzNDssCiAgICAmIzM0O0RFQlVHX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtsaXN0X3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtiaXRtYXBfaXBfZmx1c2gmIzM0OywKICAgICYjMzQ7Yml0bWFwX2lwbWFjX2ZsdXNoJiMzNDssCiAgICAmIzM0O2JpdG1hcF9wb3J0X2ZsdXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmbHVzaCBvcGVyYXRpb25zIGZvciBiaXRtYXAgYW5kIGxpc3QgSVAgc2V0cyBieSByZW1vdmluZyByZWR1bmRhbnQgYXNzaWdubWVudHMgdGhhdCByZXNldCB0aGUgZWxlbWVudCBjb3VudCBhbmQgZXh0ZW5zaW9uIHNpemUgdG8gemVybywgYW5kIGluc3RlYWQgYWRkcyBhIERFQlVHX05FVF9XQVJOX09OX09OQ0UgdG8gYXNzZXJ0IHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBhbHJlYWR5IHplcm8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IHJlbW92ZXMgc3RhdGUtcmVzZXR0aW5nIGFzc2lnbm1lbnRzLCBtZWFuaW5nIHRoYXQgaWYgYSBidWcgZXhpc3RzIHdoZXJlIGVsZW1lbnRzIGFyZSBub3QgcHJvcGVybHkgZGVjcmVtZW50ZWQsIGl0IHdpbGwgbm93IHRyaWdnZXIgYSB3YXJuaW5nIGFuZCBsZWF2ZSB0aGUgc3RhdGUgbm9uLXplcm8sIHJhdGhlciB0aGFuIHNpbGVudGx5IGhpZGluZyB0aGUgYnVnLiBGdXp6aW5nIHRoaXMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgY291bnRzIGFyZSBjb3JyZWN0bHkgbWFuYWdlZCBkdXJpbmcgc2V0IG9wZXJhdGlvbnMgYW5kIGZsdXNoaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0JJVE1BUF9JUCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfQklUTUFQX0lQTUFDJiMzNDssCiAgICAmIzM0O0lQX1NFVF9CSVRNQVBfUE9SVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OywKICAgICYjMzQ7REVCVUdfTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2xpc3Rfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2JpdG1hcF9pcF9mbHVzaCYjMzQ7LAogICAgJiMzNDtiaXRtYXBfaXBtYWNfZmx1c2gmIzM0OywKICAgICYjMzQ7Yml0bWFwX3BvcnRfZmx1c2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZsdXNoIG9wZXJhdGlvbnMgZm9yIGJpdG1hcCBhbmQgbGlzdCBJUCBzZXRzIGJ5IHJlbW92aW5nIHJlZHVuZGFudCBhc3NpZ25tZW50cyB0aGF0IHJlc2V0IHRoZSBlbGVtZW50IGNvdW50IGFuZCBleHRlbnNpb24gc2l6ZSB0byB6ZXJvLCBhbmQgaW5zdGVhZCBhZGRzIGEgREVCVUdfTkVUX1dBUk5fT05fT05DRSB0byBhc3NlcnQgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFscmVhZHkgemVyby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgcmVtb3ZlcyBzdGF0ZS1yZXNldHRpbmcgYXNzaWdubWVudHMsIG1lYW5pbmcgdGhhdCBpZiBhIGJ1ZyBleGlzdHMgd2hlcmUgZWxlbWVudHMgYXJlIG5vdCBwcm9wZXJseSBkZWNyZW1lbnRlZCwgaXQgd2lsbCBub3cgdHJpZ2dlciBhIHdhcm5pbmcgYW5kIGxlYXZlIHRoZSBzdGF0ZSBub24temVybywgcmF0aGVyIHRoYW4gc2lsZW50bHkgaGlkaW5nIHRoZSBidWcuIEZ1enppbmcgdGhpcyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBjb3VudHMgYXJlIGNvcnJlY3RseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNToyMy40OTcwMTQzNzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDc5ODU4ODYzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBNQUNcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfUE9SVFwiLFxuICAgIFwiSVBfU0VUX0xJU1RfU0VUXCIsXG4gICAgXCJERUJVR19ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImxpc3Rfc2V0X2ZsdXNoXCIsXG4gICAgXCJiaXRtYXBfaXBfZmx1c2hcIixcbiAgICBcImJpdG1hcF9pcG1hY19mbHVzaFwiLFxuICAgIFwiYml0bWFwX3BvcnRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpbnN0ZWFkIGFkZHMgYSBERUJVR19ORVRfV0FSTl9PTl9PTkNFIHRvIGFzc2VydCB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIGEgYnVnIGV4aXN0cyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IHByb3Blcmx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZyBhbmQgbGVhdmUgdGhlIHN0YXRlIG5vbi16ZXJvLCByYXRoZXIgdGhhbiBzaWxlbnRseSBoaWRpbmcgdGhlIGJ1Zy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MjMuNDk3MDIxMjg1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjU5MzUxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNDhmNWVlZWUyZjhjY2NhYmE0YjRiOGY3ZDQ0YmI0MzllN2IwOGUxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTY6MjU6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oXFxuaW5kZXggMjI2ZmRmMTdiNjgzMi4uZDZhN2U2NjA0NTQyMiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhcXG5AQCAtNzcsNyArNzcsNyBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxuIFxcdFxcdG10eXBlX2V4dF9jbGVhbnVwKHNldCk7XFxuIFxcdGJpdG1hcF96ZXJvKG1hcC1cXHUwMDNlbWVtYmVycywgbWFwLVxcdTAwM2VlbGVtZW50cyk7XFxuIFxcdHNldC1cXHUwMDNlZWxlbWVudHMgPSAwO1xcbi1cXHRhdG9taWM2NF9zZXQoXFx1MDAyNnNldC1cXHUwMDNlZXh0X3NpemUsIDApO1xcbitcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGF0b21pYzY0X3JlYWQoXFx1MDAyNnNldC1cXHUwMDNlZXh0X3NpemUpIFxcdTAwM2UgMCk7XFxuIH1cXG4gXFxuIC8qIENhbGN1bGF0ZSB0aGUgYWN0dWFsIG1lbW9yeSBzaXplIG9mIHRoZSBzZXQgZGF0YSAqL1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xcbmluZGV4IGNhM2VmOTQ3OWU4MzguLjAyNGRlM2JjOWZjM2MgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmNcXG5AQCAtNDIwLDggKzQyMCw3IEBAIGxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCBcXHUwMDI2bWFwLVxcdTAwM2VtZW1iZXJzLCBsaXN0KVxcbiBcXHRcXHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcXG4tXFx0c2V0LVxcdTAwM2VlbGVtZW50cyA9IDA7XFxuLVxcdGF0b21pYzY0X3NldChcXHUwMDI2c2V0LVxcdTAwM2VleHRfc2l6ZSwgMCk7XFxuK1xcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2V0LVxcdTAwM2VlbGVtZW50cyBcXHUwMDNlIDApO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNToyMy45NjM2NTgzNjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMDc1MTkyMzMyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBNQUNcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfUE9SVFwiLFxuICAgIFwiSVBfU0VUX0xJU1RfU0VUXCIsXG4gICAgXCJERUJVR19ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImxpc3Rfc2V0X2ZsdXNoXCIsXG4gICAgXCJiaXRtYXBfaXBfZmx1c2hcIixcbiAgICBcImJpdG1hcF9pcG1hY19mbHVzaFwiLFxuICAgIFwiYml0bWFwX3BvcnRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpbnN0ZWFkIGFkZHMgYSBERUJVR19ORVRfV0FSTl9PTl9PTkNFIHRvIGFzc2VydCB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIGEgYnVnIGV4aXN0cyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IHByb3Blcmx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZyBhbmQgbGVhdmUgdGhlIHN0YXRlIG5vbi16ZXJvLCByYXRoZXIgdGhhbiBzaWxlbnRseSBoaWRpbmcgdGhlIGJ1Zy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTQ4ZjVlZWVlMmY4Y2NjYWJhNGI0YjhmN2Q0NGJiNDM5ZTdiMDhlMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTY6MjU6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhcbmluZGV4IDIyNmZkZjE3YjY4MzIuLmQ2YTdlNjYwNDU0MjIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaFxuQEAgLTc3LDcgKzc3LDcgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuIFx0XHRtdHlwZV9leHRfY2xlYW51cChzZXQpO1xuIFx0Yml0bWFwX3plcm8obWFwLVx1MDAzZW1lbWJlcnMsIG1hcC1cdTAwM2VlbGVtZW50cyk7XG4gXHRzZXQtXHUwMDNlZWxlbWVudHMgPSAwO1xuLVx0YXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7XG4rXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGF0b21pYzY0X3JlYWQoXHUwMDI2c2V0LVx1MDAzZWV4dF9zaXplKSBcdTAwM2UgMCk7XG4gfVxuIFxuIC8qIENhbGN1bGF0ZSB0aGUgYWN0dWFsIG1lbW9yeSBzaXplIG9mIHRoZSBzZXQgZGF0YSAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jXG5pbmRleCBjYTNlZjk0NzllODM4Li4wMjRkZTNiYzlmYzNjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xuQEAgLTQyMCw4ICs0MjAsNyBAQCBsaXN0X3NldF9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbiwgXHUwMDI2bWFwLVx1MDAzZW1lbWJlcnMsIGxpc3QpXG4gXHRcdGxpc3Rfc2V0X2RlbChzZXQsIGUpO1xuLVx0c2V0LVx1MDAzZWVsZW1lbnRzID0gMDtcbi1cdGF0b21pYzY0X3NldChcdTAwMjZzZXQtXHUwMDNlZXh0X3NpemUsIDApO1xuK1x0REVCVUdfTkVUX1dBUk5fT05fT05DRShzZXQtXHUwMDNlZWxlbWVudHMgXHUwMDNlIDApO1xuIH1cbiBcbiBzdGF0aWMgdm9pZFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MjMuOTYzNjU5ODUxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTYwMzgzOTIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaDogUG90ZW50aWFsIEZ1bmN0aW9uYWwgQ2hhbmdlcyBhbmQgRnV6emluZyBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgcmVwbGFjaW5nIGFzc2lnbm1lbnRzIHdpdGggYERFQlVHX05FVF9XQVJOX09OX09OQ0VgIGNoZWNrcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSBgYXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7YCBpbiBgbXR5cGVfZmx1c2hgIGlzIGJlaW5nIHJlcGxhY2VkLCBhbmQgc2ltaWxhcmx5LCBgc2V0LVx1MDAzZWVsZW1lbnRzID0gMDsgYXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7YCBpbiBgbGlzdF9zZXRfZmx1c2hgIGlzIGdldHRpbmcgc3dhcHBlZCBvdXQuXG5cbkluaXRpYWxseSwgbXkgdGhvdWdodCB3YXMsIFwiV2FpdCwgdGhpcyByZW1vdmVzIHRoZSByZXNldHRpbmcgb2YgdGhvc2UgdmFyaWFibGVzIGFuZCBqdXN0IHB1dHMgYSBkZWJ1ZyB3YXJuaW5nIHRoZXJlP1wiIFRoYXQncyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJpZ2h0PyBJdCdzICpyZW1vdmluZyogYW4gYXNzaWdubWVudCwgbm90IGp1c3QgYWRkaW5nIGxvZ2dpbmcuIFRoYXQncyBhIHNoaWZ0IGluIGJlaGF2aW9yLlxuXG5UaGVuIEkgcGF1c2VkIGFuZCB0aG91Z2h0LCBcIkhvbGQgb24sIGlzIGl0IGp1c3QgYSBkZWJ1ZyB3YXJuaW5nLCBvciBkb2VzIHRoaXMgYWN0dWFsbHkgKmNoYW5nZSogaG93IHRoZSBzeXN0ZW0gd29ya3M/XCIgTGV0J3MgZGlnIGEgYml0IGRlZXBlci4gVGFraW5nIGEgbG9vayBhdCBgbGlzdF9zZXRfZmx1c2hgOlxuXG5gYGBjXG5cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCBcdTAwMjZtYXAtXHUwMDNlbWVtYmVycywgbGlzdClcblx0XHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcbi1cdHNldC1cdTAwM2VlbGVtZW50cyA9IDA7XG4tXHRhdG9taWM2NF9zZXQoXHUwMDI2c2V0LVx1MDAzZWV4dF9zaXplLCAwKTtcbitcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2V0LVx1MDAzZWVsZW1lbnRzIFx1MDAzZSAwKTtcbmBgYFxuXG5NeSBndWVzcyBpcyB0aGF0IGBsaXN0X3NldF9kZWxgIHByb2JhYmx5ICphbHJlYWR5KiBkZWNyZW1lbnRzIGBzZXQtXHUwMDNlZWxlbWVudHNgIGFuZCBgc2V0LVx1MDAzZWV4dF9zaXplYC4gVGhhdCBtZWFucyB0aGUgcmVzZXQgdG8gMCB3YXMgcmVkdW5kYW50LiBJZiBzbywgaXQncyBwb3NzaWJsZSB0aGF0IHJlc2V0dGluZyB0aGVzZSB2YXJpYWJsZXMgd2FzIGhpZGluZyBhIGJ1ZywgYW5kIG5vdywgaXQgd2lsbCBub3QgYmUgcmVzZXQuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2Ugbm93LCBpZiBhIGJ1ZyAqZGlkKiBleGlzdCBhbmQgc29tZWhvdyBsZWZ0IHRoZSBjb3VudHMgbm9uLXplcm8sIGl0IHdvdWxkIHN0YXkgdGhhdCB3YXkgYW5kIHdlIHdvdWxkIGJlIGFsZXJ0ZWQgYnkgdGhlIGRlYnVnIHdhcm5pbmcuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIFwiSXMgdGhpcyBzaWduaWZpY2FudCBlbm91Z2ggdG8gd2FycmFudCBmdXp6aW5nP1wiIEkgdGhpbmsgc28uIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgc2Vuc2UgdGhhdCBpZiB0aGVyZSdzIGFuIGlzc3VlIGxlYWRpbmcgdG8gaW5jb3JyZWN0IGNvdW50cywgdGhpcyB3aWxsIGV4cG9zZSBpdCwgb3IgYXQgbGVhc3Qgd2FybiB1cy4gU28sIGV2ZW4gdGhvdWdoIGl0IGxvb2tzIGxpa2Ugc2ltcGxlIHJlbW92YWwgb2YgcG90ZW50aWFsbHkgcmVkdW5kYW50IGFzc2lnbm1lbnRzLCBpdCBjb3VsZCByZXZlYWwgZXhpc3RpbmcsIG1hc2tlZCBwcm9ibGVtcy4gSSdsbCBtYWtlIHN1cmUgdG8gdmVyaWZ5IGBsaXN0X3NldF9mbHVzaGAgYW5kIGBtdHlwZV9mbHVzaGAgdG8gZW5zdXJlIHRoaXMgaXMgdGhlIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNTozMy41Njc1MDA5NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMzc4ODc4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaXN0X3NldF9mbHVzaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQxNT1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDE2Omxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxNy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU0Mz1saXN0X3NldF9jYW5jZWxfZ2Moc3RydWN0IGlwX3NldCAqc2V0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTAtXFx0LyogRmx1c2ggbGlzdCB0byBkcm9wIHJlZmVyZW5jZXMgdG8gb3RoZXIgaXBzZXRzICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NTE6XFx0bGlzdF9zZXRfZmx1c2goc2V0KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU1Mi19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU1ND1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgc2V0X3ZhcmlhbnQgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2Mi1cXHQuZGVzdHJveSA9IGxpc3Rfc2V0X2Rlc3Ryb3ksXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjM6XFx0LmZsdXNoXFx0PSBsaXN0X3NldF9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2NC1cXHQuaGVhZFxcdD0gbGlzdF9zZXRfaGVhZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MzUuMjAxMjk0MDU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0NjcyMzg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBpcHNldF9iaXRtYXBfZ2VuLmhgIE15c3RlcnkqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oYCBoZWFkZXIgZmlsZS4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBgbXR5cGVfZmx1c2hgIGlzIGdvaW5nIG9uIGhlcmUuIEl0J3MgdXN1YWxseSB3b3J0aCBkb3VibGUtY2hlY2tpbmcgdGhlIGxvdy1sZXZlbCBjb2RlIHRoYXQgY291bGQgaW1wYWN0IGJpdG1hcCBvcGVyYXRpb25zIGluIElQIHNldHMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gYG10eXBlX2ZsdXNoYCBhbmQgdGhlIGJpdG1hcCBnZW5lcmF0aW9uIHNwZWNpZmljYWxseSwgYXMgdGhpcyBjb3VsZCBoYXZlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb24gbWVtb3J5IG1hbmFnZW1lbnQgb3IgYXRvbWljaXR5IGR1cmluZyBmbHVzaCBvcGVyYXRpb25zLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgd2F5IHRoZSBiaXRtYXAgc3RydWN0dXJlcyBhcmUgaGFuZGxlZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBwcm9jZXNzLiBBbnkgdW5leHBlY3RlZCBiZWhhdmlvciBoZXJlIGFuZCBpdCBjb3VsZCBiZSB0aGUgc291cmNlIG9mIGEgc3VidGxlLCBidXQgY3JpdGljYWwsIGJ1Zy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc0MCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI1OjM5LjM0ODAyMTI2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc0NTA5NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2ZsdXNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC0yMy0jZGVmaW5lIG10eXBlX21lbXNpemVcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX21lbXNpemUpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oOjI0OiNkZWZpbmUgbXR5cGVfZmx1c2hcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC0yNS0jZGVmaW5lIG10eXBlX2hlYWRcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2hlYWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg9NzE9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6NzI6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC03My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg9MzAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC0zMTAtXFx0LmRlc3Ryb3kgPSBtdHlwZV9kZXN0cm95LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaDozMTE6XFx0LmZsdXNoXFx0PSBtdHlwZV9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmgtMzEyLVxcdC5oZWFkXFx0PSBtdHlwZV9oZWFkLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjQ9c3RhdGljIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciB6ZXJvbWFzayA9IHt9O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xOTktI3VuZGVmIG10eXBlX2FoYXNoX21lbXNpemVcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIwMDojdW5kZWYgbXR5cGVfZmx1c2hcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIwMS0jdW5kZWYgbXR5cGVfZGVzdHJveVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNDctI2RlZmluZSBtdHlwZV9haGFzaF9tZW1zaXplXFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9haGFzaF9tZW1zaXplKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjQ4OiNkZWZpbmUgbXR5cGVfZmx1c2hcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjQ5LSNkZWZpbmUgbXR5cGVfZGVzdHJveVxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVzdHJveSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NDQ5PXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo0NTA6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNDUxLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgbXR5cGVfdmFyaWFudCA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTU2Ni1cXHQuZGVzdHJveSA9IG10eXBlX2Rlc3Ryb3ksXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxNTY3OlxcdC5mbHVzaFxcdD0gbXR5cGVfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNTY4LVxcdC5oZWFkXFx0PSBtdHlwZV9oZWFkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNTo0MS4wMjI1MzY1MDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDQ3NzM1MzgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiBhbiBJUHNldCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgcmVhY3Rpb24gaXMgYSBtaXggb2YgaW50cmlndWUgYW5kIGNvbmNlcm4uIEl0IHByaW1hcmlseSB0b3VjaGVzIGBpcF9zZXRfYml0bWFwX2dlbi5oYCBhbmQgYGlwX3NldF9saXN0X3NldC5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBtdHlwZV9mbHVzaGAgYW5kIGBsaXN0X3NldF9mbHVzaGAgZnVuY3Rpb25zLiBJdCBzZWVtcyB0byBiZSBjbGVhbmluZyB1cCBzb21lIHN0YXRlIHJlc2V0IGxvZ2ljLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlcGVyY3Vzc2lvbnMuXG5cbkluIGBpcF9zZXRfYml0bWFwX2dlbi5oYCwgdGhlIHBhdGNoIHJlbW92ZXMgYGF0b21pYzY0X3NldChcdTAwMjZzZXQtXHUwMDNlZXh0X3NpemUsIDApO2AgYWZ0ZXIgemVyb2luZyBvdXQgdGhlIGJpdG1hcCBhbmQgcmVzZXR0aW5nIGBzZXQtXHUwMDNlZWxlbWVudHNgIGluIGBtdHlwZV9mbHVzaGAuIFRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gSXQgYWxzbyBhZGRzIGEgZGVidWcgd2FybmluZy4gTm93LCB0aGUgd2VpcmQgcGFydCBpcyBgbXR5cGVfZmx1c2hgIHN0aWxsIGhhcyBgc2V0LVx1MDAzZWVsZW1lbnRzID0gMDtgLiBUaGlzIGluY29uc2lzdGVuY3kgaXMgYSByZWQgZmxhZy5cblxuVGhlIGBpcF9zZXRfbGlzdF9zZXQuY2AgY2hhbmdlcyBhcmUgYSBiaXQgbW9yZSBpbnRlcmVzdGluZy4gYGxpc3Rfc2V0X2ZsdXNoYCB1c2VkIHRvIHJlc2V0ICpib3RoKiBgc2V0LVx1MDAzZWVsZW1lbnRzYCBhbmQgYHNldC1cdTAwM2VleHRfc2l6ZWAuIFRoZSBwYXRjaCByZW1vdmVzIHRoZXNlIGFzc2lnbm1lbnRzIGFuZCBhZGRzIGEgZGVidWcgd2FybmluZyBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgdG8gY2hlY2sgaWYgYHNldC1cdTAwM2VlbGVtZW50c2AgaXMgZ3JlYXRlciB0aGFuIHplcm8uXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZS4gSWYgdGhlIG9yaWdpbmFsIGNvZGUgKnJlbGllZCogb24gdGhlc2UgYXNzaWdubWVudHMgKGFuZCBJJ20gc3VzcGljaW91cyB0aGF0IGl0IG1pZ2h0KSwgdGhlbiB3ZSBoYXZlIGEgcG90ZW50aWFsIHJlZ3Jlc3Npb24uIElmIHRoZXkgd2VyZSByZWR1bmRhbnQsIHRoZW4gdGhpcyBpcyBhIGNsZWFudXAsIGFuZCB0aGUgZGVidWcgd2FybmluZyBpcyBhIHNhZmV0eSBuZXQuXG5cbkdpdmVuIHRoZSBuYXR1cmUgb2YgbmV0d29yayBjb2RlLCBhbmQgbXkgZXhwZXJpZW5jZSBpbiB0aGlzIGZpZWxkLCB0aGUgcHJlc2VuY2Ugb2YgdGhlIGRlYnVnIHdhcm5pbmcgYW5kIHRoZSBhc3NpZ25tZW50cycgcmVtb3ZhbCBzY3JlYW0gXCJmdXp6IHRoaXNcIi4gIEV2ZW4gaWYgdGhlIGFzc2lnbm1lbnRzIHdlcmUgcmVkdW5kYW50LCByZW1vdmluZyB0aGVtIGNvdWxkIGV4cG9zZSBhIHN1YnRsZSBidWcsIGxpa2UgYSBtaXNzaW5nIGRlY3JlbWVudCBzb21ld2hlcmUuIElmIGBzZXQtXHUwMDNlZWxlbWVudHNgIG9yIGBzZXQtXHUwMDNlZXh0X3NpemVgIGFyZW4ndCBiZWluZyBwcm9wZXJseSBtYW5hZ2VkLCB0aGlzIHBhdGNoIHdpbGwgbWFrZSB0aGUgaXNzdWUgdmlzaWJsZSB3aXRoIGEgd2FybmluZywgYW5kIGxpa2VseSB1bmNvdmVyIHNvbWUgc2VyaW91cyBjb3JuZXIgY2FzZSBpc3N1ZXMuIFRoaXMgbWFrZXMgaXQgYW4gaWRlYWwgdGFyZ2V0IGZvciBzeXprYWxsZXIuIFRoZSBkZWJ1ZyB3YXJuaW5nIHdpbGwgcXVpY2tseSBicmluZyBhbnkgaW5jb3JyZWN0IHZhbHVlcyB0byBsaWdodCwgYW5kIHRoZSByZW1vdmVkIGFzc2lnbm1lbnRzIG9wZW4gdGhlIGRvb3IgdG8gYWxsIHNvcnRzIG9mIG90aGVyIHByb2JsZW1zLlxuXG5TbywgdGhlIGtleSBmdW5jdGlvbnMgaGVyZSBhcmUgYGxpc3Rfc2V0X2ZsdXNoYCBhbmQgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIGBtdHlwZV9mbHVzaGAuIGBsaXN0X3NldF9mbHVzaGAgaXMgc3RhdGljIGFuZCBhc3NpZ25lZCB0byBgLmZsdXNoYCBpbiBgc2V0X3ZhcmlhbnRgLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBgaXBfc2V0X2ZsdXNoYCBpbiBgaXBfc2V0X2NvcmUuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGNhbGxlZCBhbmQgd2hhdCB0aGUgcG9zc2libGUgaW50ZXJhY3Rpb24gc2NlbmFyaW9zIGFyZS4gSSB3aWxsIG5lZWQgdG8gbG9vayBkZWVwZXIgaW50byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3ODAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6NDEuNDk5ODkyOTE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDc1NTY5NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X2ZsdXNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzAyPXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMDQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTEtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMTI6c3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMy1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjUtXFx0XFx0XFx0aWYgKHMpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMjY6XFx0XFx0XFx0XFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNy1cXHRcXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcXHRcXHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2NS1cXHRbSVBTRVRfQ01EX0ZMVVNIXVxcdD0ge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTY2OlxcdFxcdC5jYWxsXFx0XFx0PSBpcF9zZXRfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjctXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfTVVURVgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjQzLjAwNzQ1NTY0OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NDMzNjk0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBGbHVzaGluZyBNZWNoYW5pc20qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgSVAgc2V0IGZsdXNoaW5nIGlzIGltcGxlbWVudGVkLiBJdCBsb29rcyBsaWtlIGBpcF9zZXRfZmx1c2hgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgZmx1c2ggb3BlcmF0aW9uIGl0c2VsZi4gVGhhdCBtYWtlcyBzZW5zZSwgdGhlIGNvZGUgaGFzIHRvIGJlZ2luIHNvbWV3aGVyZS5cblxuTm93LCBoZXJlJ3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBzZWUgYSBgbXR5cGVfZmx1c2hgIHRlbXBsYXRlLCBzcGVjaWZpY2FsbHkgaW4gYGlwX3NldF9iaXRtYXBfZ2VuLmhgLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgcmVhbCBtYWdpYyBoYXBwZW5zLiBJdCBsb29rcyBsaWtlIHRoaXMgdGVtcGxhdGUgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGFjdHVhbCBmbHVzaCBmdW5jdGlvbnMgZm9yIGRpZmZlcmVudCBkYXRhIHR5cGVzLiBUaGV5J3JlIHByb2JhYmx5IGluc3RhbnRpYXRlZCB0byBjcmVhdGUgZnVuY3Rpb25zIGxpa2UgYGJpdG1hcF9pcF9mbHVzaGAsIGBiaXRtYXBfaXBtYWNfZmx1c2hgLCBhbmQgYGJpdG1hcF9wb3J0X2ZsdXNoYC4gVGhpcyBhcHByb2FjaCBpcyBmYWlybHkgZWZmaWNpZW50IGFzIGl0IGFsbG93cyB0aGVtIHRvIHJldXNlIHRoZSBzYW1lIHN0cnVjdHVyZSwgYnV0IHdpdGggdmFyaWF0aW9ucyB0byBoYW5kbGUgdGhlIGRpZmZlcmVudCB1bmRlcmx5aW5nIGRhdGEuIEludGVyZXN0aW5nIHVzZSBvZiB0ZW1wbGF0ZXMgdGhlcmUuIEknZCBoYXZlIHRvIGxvb2sgZnVydGhlciB0byBzZWUgd2hhdCBkZWZpbmVzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ0MCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjQ3Ljk1MDgyOTA1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MDIxMDM1MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYml0bWFwX2lwX2ZsdXNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNjo0OS40OTEwNTAzMDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk4MDAwNTEyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGVjb2RpbmcgdGhhdCBNYWNybzogQSBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJJ20gbG9va2luZyBhdCB0aGlzIGBtdHlwZV9mbHVzaGAgbWFjcm8gZGVmaW5pdGlvbiBhbmQgaXQncyBzdGFydGluZyB0byB0cmlnZ2VyIHNvbWUgYWxhcm1zLiBJdCdzIGRlZmluZWQgYXMgYCNkZWZpbmUgbXR5cGVfZmx1c2ggSVBTRVRfVE9LRU4oTVRZUEUsIF9mbHVzaClgLiBPa2F5LCBzbyBgbXR5cGVfZmx1c2hgIGlzIGJlaW5nIGNvbnN0cnVjdGVkIHZpYSBhIG1hY3JvLCB3aGljaCBpc24ndCB1bnVzdWFsLCBidXQgdGhlIGBNVFlQRWAgcGFydCBpcyB0aGUga2V5LiBUaGF0J3MgdGhlIG9uZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCwgYW5kIEkgc3VzcGVjdCBpdCdzIHBvaW50aW5nIG1lIHRvIHNvbWUgY29yZSBzdHJ1Y3R1cmUgb3IgdHlwZSBkZWZpbml0aW9uLlxuXG5UaW1lIHRvIHN3aXRjaCBnZWFycy4gTGV0J3MgZGlnIGludG8gYGlwX3NldF9iaXRtYXBfaXAuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCB0aGlzIGVsdXNpdmUgYE1UWVBFYCBhY3R1YWxseSAqaXMqLiBUaGlzIGtpbmQgb2YgbWFjcm8gZGFuY2UgaXMgb2Z0ZW4gaG93IHRoZXkgYWJzdHJhY3QgYXdheSB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMsIHByb2JhYmx5IGZvciBmbGV4aWJpbGl0eSBvciBwbGF0Zm9ybS1zcGVjaWZpYyByZWFzb25zLiBJIG5lZWQgdG8gdW5yYXZlbCB0aGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoYXQgYG10eXBlX2ZsdXNoYCBpcyB1bHRpbWF0ZWx5IHJlZmVycmluZyB0by4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyEgVGltZSB0byByZXZlcnNlIGVuZ2luZWVyLiBMZXQncyBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc1NCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjU0LjQ3MTA1ODE4NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzOTMxMjcyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIE1UWVBFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jPTMzPU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2JpdG1hcDppcFxcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jLTM0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jOjM1OiNkZWZpbmUgTVRZUEVcXHRcXHRiaXRtYXBfaXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYy0zNi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXBtYWMuYz0zMz1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9iaXRtYXA6aXAsbWFjXFxcIik7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmMtMzQtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmM6MzU6I2RlZmluZSBNVFlQRVxcdFxcdGJpdG1hcF9pcG1hY1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jLTM2LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM9Mjc9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfYml0bWFwOnBvcnRcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jLTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM6Mjk6I2RlZmluZSBNVFlQRVxcdFxcdGJpdG1hcF9wb3J0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYy0zMC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYz03MD1oYXNoX2lwNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA0X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNF9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTc0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYzo3NTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtNzYtI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jPTIwMj1oYXNoX2lwNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA2X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNl9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTIwOC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM6MjA5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwNlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy0yMTAtI2RlZmluZSBIT1NUX01BU0tcXHQxMjhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYz03Mj1oYXNoX2lwbWFjNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtNzctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jOjc4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwbWFjNFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYy03OS0jZGVmaW5lIFBGXFx0XFx0NFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jPTE4MD1oYXNoX2lwbWFjNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtMTg5LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYzoxOTA6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfaXBtYWM2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTE5MS0jZGVmaW5lIFBGXFx0XFx0Nlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYz02OT1oYXNoX2lwbWFyazRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFyazRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtNzQtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYzo3NTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcG1hcms0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy03Ni0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jPTIwNT1oYXNoX2lwbWFyazZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFyazZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtMjEyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM6MjEzOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwbWFyazZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jLTIxNC0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYz03OT1oYXNoX2lwcG9ydDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtODUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYzo4NjojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcHBvcnQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy04Ny0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jPTI0OT1oYXNoX2lwcG9ydDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtMjU3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM6MjU4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jLTI1OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jPTc3PWhhc2hfaXBwb3J0aXA0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRpcDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04NC0vKiBDb21tb24gZnVuY3Rpb25zICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jOjg1OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydGlwNFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04Ni0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM9MjQ4PWhhc2hfaXBwb3J0aXA2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRpcDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy0yNTYtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jOjI1NzojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcHBvcnRpcDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmMtMjU4LSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTEyMT1oYXNoX2lwcG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6MTI5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEzMC0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM3OT1oYXNoX2lwcG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6Mzg4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYz02MT1oYXNoX21hYzRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX21hYzRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmMtNjUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYzo2NjojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9tYWM0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYy02Ny0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTEwMj1oYXNoX25ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMTA3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MTA4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwOS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTI3Mz1oYXNoX25ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMjgwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MjgxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4Mi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOT1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTM0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzU6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2U0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYzPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNzAtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRpZmFjZTZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcyLSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTEyNT1oYXNoX25ldG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTMwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MTMxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTM2Mz1oYXNoX25ldG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzcwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzcxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3Mi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MTE3PWhhc2hfbmV0cG9ydDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjMtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MTI0OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMTI1LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTMzND1oYXNoX25ldHBvcnQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjM0MzojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTM0NC0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MTMyPWhhc2hfbmV0cG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6MTM5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnRuZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMTQwLSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTQyNj1oYXNoX25ldHBvcnRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0bmV0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDM0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjQzNTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0bmV0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTQzNi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxuc291bmQvcGNpL2FzaWhwaS9ocGk2MjA1LmM9MTYwMD1zdGF0aWMgdTE2IGJvb3RfbG9hZGVyX2NvbmZpZ19lbWlmKHN0cnVjdCBocGlfYWRhcHRlcl9vYmogKnBhbywgaW50IGRzcF9pbmRleClcXG4tLVxcbnNvdW5kL3BjaS9hc2locGkvaHBpNjIwNS5jLTE2MjAtI2RlZmluZSBSU1RfT0ZTIDhcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYzoxNjIxOiNkZWZpbmUgTVRZUEVfT0ZTIDRcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYy0xNjIyLSNkZWZpbmUgUkhfT0ZTIDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6NTYuMDEwMzc1MTM5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5Mjg2OTI3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpcF9zZXQgRmx1c2ggRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIGBpcF9zZXRfZmx1c2hgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGZsdXNoaW5nIHNldHMuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaDsgYG10eXBlX2ZsdXNoYCBhbHNvIHNlZW1zIHRvIGJlIHJlbGV2YW50LCBhcyBpdCdzIHVzZWQgd2l0aGluIGBpcF9zZXRfaGFzaF9nZW4uaGAuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIGlmIHRoYXQgaGVhZGVyIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgcmVjZW50bHkuIExldCBtZSBjaGVjayB0aGUgZGlmZi4uLiBOb3BlLCBpdCBsb29rcyBsaWtlIG9ubHkgYGlwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgaXBfc2V0X2xpc3Rfc2V0LmNgIGhhdmUgY2hhbmdlcy4gU28gYGlwX3NldF9oYXNoX2dlbi5oYCBpcyBsaWtlbHkgbm90IHRoZSBmb2N1cyBoZXJlLlxuXG5SaWdodCwgYmFjayB0byBgbXR5cGVfZmx1c2hgLiBJdCdzIHVzZWQgaW4gYGlwX3NldF9iaXRtYXBfZ2VuLmhgIGZvciBgYml0bWFwX2lwYCwgYGJpdG1hcF9pcG1hY2AsIGFuZCBgYml0bWFwX3BvcnRgLiBUaGlzIG1lYW5zIHRoYXQgYGlwX3NldF9mbHVzaGAgaXMgc3RpbGwgdGhlIG1haW4gZm9jdXMgYnV0IGl0IGlzIGltcG9ydGFudCB0byByZWFsaXplIHRoZSBjb25uZWN0aW9uIHdpdGggdGhlIGJpdG1hcCBzZXRzLlxuXG5Ob3csIGxldCdzIGRldGVybWluZSB0aGUgcmVhY2hhYmlsaXR5IGFuZCBhbnkgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgZm9yIGBpcF9zZXRfZmx1c2hgLiBJdCdzIGxvY2F0ZWQgaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY2AuIEFzIGZvciB0aGUgY29uZmlndXJhdGlvbnMgbmVlZGVkLCBpdCBzZWVtcyB3ZSdyZSBsb29raW5nIGF0IGBDT05GSUdfSVBfU0VUYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX0lQYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX0lQTUFDYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX1BPUlRgLCBhbmQgYENPTkZJR19JUF9TRVRfTElTVF9TRVRgLiBFeGNlbGxlbnQsIHRoYXQgY292ZXJzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBiaXRtYXAgc2V0IHZhcmlhbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY0MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzowNS45MzkwNzA3NDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjA0MTMwNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MjptZW51Y29uZmlnIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJUCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xND1pZiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2OmNvbmZpZyBJUF9TRVRfTUFYXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3LVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgSVAgc2V0c1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yNy1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mjg6Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcImJpdG1hcDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zNi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mzc6Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcImJpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDUtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ2OmNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcImJpdG1hcDpwb3J0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NTpjb25maWcgSVBfU0VUX0hBU0hfSVBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTYtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjY1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03My1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzQ6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTgyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCxpcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Mi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwMzpjb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTEtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjExMjpjb25maWcgSVBfU0VUX0hBU0hfTUFDXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiaGFzaDptYWMgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMjE6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjktXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMDpjb25maWcgSVBfU0VUX0hBU0hfTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDAtXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE0ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTg6Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjg6Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjktXFx0dHJpc3RhdGUgXFxcImxpc3Q6c2V0IHNldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzowNy40OTk0ODg2NjRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0MDk2NjQzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhlc2UgY29uZmlndXJhdGlvbnM6XG5cbioqRGVlcCBEaXZlIGludG8gSVBzZXQgQ29uZmlndXJhdGlvbnMgYW5kIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIElQc2V0IGNvbmZpZ3VyYXRpb25zOiBgSVBfU0VUYCwgYElQX1NFVF9CSVRNQVBfSVBgLCBgSVBfU0VUX0JJVE1BUF9JUE1BQ2AsIGBJUF9TRVRfQklUTUFQX1BPUlRgLCBhbmQgYElQX1NFVF9MSVNUX1NFVGAuIEl0J3MgYSBzdGFuZGFyZCBzZXQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGNsZWFybHkuIFdhaXQgYSBtaW51dGXigKYgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGBJUF9TRVRgIGlzIGJ1aWx0IG9uIHRvcCBvZiBgTkVURklMVEVSYC4gVGhhdCdzIGltcG9ydGFudC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGludGVyYWN0aW9uIGFuZCBhbnkgaW1wbGljYXRpb25zIGl0IG1pZ2h0IGhhdmUgZm9yIG15IHNwZWNpZmljIHVzZSBjYXNlLCBzbyBsZXQncyBoZWFkIG92ZXIgdG8gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuIFRpbWUgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgaG93IHRoZXNlIGVsZW1lbnRzIHdvcmsgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDkzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjc6MTguOTA5MTU1MzQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjUwMjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mj1tZW51Y29uZmlnIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJUCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTUtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY9Y29uZmlnIElQX1NFVF9NQVhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xOS1cXHRyYW5nZSAyIDY1NTM0XFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yOD1jb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozMDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zMS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mzc9Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcImJpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM5OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQwLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz00Nj1jb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDktXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTU1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTc6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTgtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTY1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Njc6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjgtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTc0PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzY6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzctXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTgzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4NTpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9OTM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTU6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEwMz1jb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTE0OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExNS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTIxPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMzpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjQtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzMD1jb25maWcgSVBfU0VUX0hBU0hfTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMjpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzMtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDE6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQyLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNDg9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTA6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNTg9Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE2OD1jb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE3MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNzEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE3OD1jb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3OS1cXHRib29sIFxcXCJFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIGlwc2V0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxODA6XFx0ZGVwZW5kcyBvbiBHQ09WX0tFUk5FTFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xODEtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzoxOC45NjE2NjIwNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjAzNzM2NzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIElQIFNldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYElQIFNldGAgY29uZmlndXJhdGlvbiBjb2RlLiBJdCdzIGNsZWFyIHRoYXQgYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgZm91bmRhdGlvbmFsLiBUaGVuLCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBzcGVjaWZpYyBgSVAgU2V0YCBmdW5jdGlvbmFsaXRpZXMuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3MsIEkndmUgZ290IGBJTkVUYCwgYE5FVEZJTFRFUmAsIGBJUF9TRVRgLCBmb2xsb3dlZCBieSB0aGUgYml0bWFwIGNvbmZpZ3VyYXRpb25zOiBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYW5kIGBJUF9TRVRfQklUTUFQX1BPUlRgLiBUaG9zZSBzZWVtIHRvIGJlIHRoZSBrZXkgb25lcyB1c2luZyBgaXBfc2V0X2JpdG1hcF9nZW4uaGAuIEFuZCwgYElQX1NFVF9MSVNUX1NFVGAgaXMgZGVmaW5pdGVseSB1c2luZyBgaXBfc2V0X2xpc3Rfc2V0LmNgLiBTbyB0byBiZSBwcmVjaXNlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmZpZ3MgYXJlIGFsbCBlbmFibGVkOiBgSU5FVGAsIGBORVRGSUxURVJgLCBgSVBfU0VUYCwgYElQX1NFVF9CSVRNQVBfSVBgLCBgSVBfU0VUX0JJVE1BUF9JUE1BQ2AsIGBJUF9TRVRfQklUTUFQX1BPUlRgLCBhbmQgYElQX1NFVF9MSVNUX1NFVGAuXG5cbk5vdywgbGV0J3Mgem9vbSBpbiBvbiBgaXBfc2V0X2ZsdXNoYC4gVGhhdCdzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBhIG5ldGxpbmsgY2FsbGJhY2ssIHNwZWNpZmljYWxseSBoYW5kbGluZyBgSVBTRVRfQ01EX0ZMVVNIYC4gIEkgd29uZGVyIGlmIHRoYXQgYGZsdXNoYCBmdW5jdGlvbiBpcyB1c2VkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUgYmFzZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoIHRoZXJlLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBpcF9zZXRfZmx1c2hfc2V0YCBhbmQgc2VlIHdoYXQgdGhhdCBleHBvc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ3OCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzoyNS41NjU0MDE2NDJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjkzNzUzOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X2ZsdXNoX3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzAzOmlwX3NldF9mbHVzaF9zZXQoc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzA0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzEyPXN0YXRpYyBpbnQgaXBfc2V0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cXHRcXHRcXHRpZiAocylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMyNjpcXHRcXHRcXHRcXHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVxcdFxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzMyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzMzOlxcdFxcdGlwX3NldF9mbHVzaF9zZXQocyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzoyNy4wOTQ3ODI1MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTUzNTM2NzY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZsdXNoIE9wZXJhdGlvbiBpbiBgaXBfc2V0YCoqXG5cbk9rYXksIHRoZSB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGZsdXNoaW5nIG1lY2hhbmlzbSB3aXRoaW4gYGlwX3NldGAsIGFuZCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgYGlwX3NldF9mbHVzaGAsIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZS4gUmlnaHQsIGl0J3MgYSBuZXRsaW5rIGNhbGxiYWNrLCBzbyBpdCBoYW5kbGVzIHRoZSBuZXR3b3JrIGludGVyZmFjZSBjb21tdW5pY2F0aW9uLCB3aGljaCBhbGlnbnMgd2l0aCBmbHVzaGluZy4gTm93IEkgbmVlZCB0byBjb25maXJtIHRoaXMgYnkgZGlnZ2luZyBpbnRvIGBpcF9zZXRfY29yZS5jYCBhbmQgZmluZGluZyB0aGUgZnVuY3Rpb24uXG5cbkFscmlnaHQsIHRoZXJlIGl0IGlzOiBgaXBfc2V0X2ZsdXNoYC4gQnV0IGl0J3Mgc3RhdGljLiBIbW0sIHVzdWFsbHksIEkgcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSXQncyB1c2VkIGFzIGEgY2FsbGJhY2ssIHNvIGl0IHNob3VsZCBub3QgYmUgaW5saW5lZC4gSSBqdXN0IGNvbmZpcm1lZDogYHN0YXRpYyBpbnQgaXBfc2V0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pYC5cblxuVGhlIGZhY3QgdGhhdCBpdCdzIHN0YXRpYyBtYWtlcyBtZSBhIGxpdHRsZSBjYXV0aW91cy4gSXQgbWlnaHQgbWVhbiB0aGUgY29tcGlsZXIgb3B0aW1pemVkIGl0IGFnZ3Jlc3NpdmVseSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpdCBub3QgYmVpbmcgYSBkaXN0aW5jdCBzeW1ib2wgSSBjb3VsZCBwb2ludCB0by4gQnV0IGJlY2F1c2UgaXQncyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBpbiBgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiYCwgaXQgc2hvdWxkbid0IGJlIGlubGluZWQuIFRoYXQncyBhIGdvb2Qgc2lnbi4gTGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbHRlcm5hdGl2ZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZsdXNoLCBhcyB0aGUgaW5zdHJ1Y3Rpb25zIHN1Z2dlc3RlZC4gQ2hlY2tpbmcgYGlwX3NldF9kZXN0cm95YCB3b24ndCB3b3JrLCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBjaGFuZ2VzIGBmbHVzaGAuIEkgbmVlZCB0byByZXZpZXcgYGlwX3NldF9jb3JlLmNgIGZvciBhbnkgcmVsYXRlZCwgbm9uLXN0YXRpYyBmdW5jdGlvbiBkZWZpbml0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNjUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjc6MzYuNjMwMTUzMzExWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTg5MzIzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzAyPXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMDQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTEtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMTI6c3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMy1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjUtXFx0XFx0XFx0aWYgKHMpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMjY6XFx0XFx0XFx0XFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNy1cXHRcXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcXHRcXHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2NS1cXHRbSVBTRVRfQ01EX0ZMVVNIXVxcdD0ge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTY2OlxcdFxcdC5jYWxsXFx0XFx0PSBpcF9zZXRfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjctXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfTVVURVgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI3OjM2LjY3MjA1MDUwOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUxOTI5NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIElQIFNldCBGbHVzaCBPcHRpbWl6YXRpb24qKlxuXG5Pa2F5LCBoZXJlJ3MgaG93IEknbSBhcHByb2FjaGluZyB0aGlzLiBJJ20gbG9va2luZyBhdCB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIGZsdXNoaW5nIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBJUCBzZXQgZnJhbWV3b3JrLiBJbml0aWFsbHksIEkgbm90ZWQgdGhhdCBgaXBfc2V0X2ZsdXNoYCBpcyBzdGF0aWMgYnV0IHVzZWQgYXMgYSBjYWxsYmFjaywgd2hpY2ggaXMgZmluZSBpbiBwcmluY2lwbGUuIE15IHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIG5ldGxpbmsgbWVzc2FnZXMgaW4gbmV0ZmlsdGVyIGlzIGBuZm5ldGxpbmtfcmN2X21zZ2AsIGJ1dCBmb3IgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGgsIGBpcF9zZXRfZmx1c2hgIGlzIHRoZSBtb3JlIHJlbGV2YW50IHBvaW50LiBJIGNoZWNrZWQgaWYgYGlwX3NldF9mbHVzaGAgaXMgZXhwb3J0ZWQg4oCTIGl0J3Mgbm90LiBJIGNvbnNpZGVyZWQgb3RoZXIgZmx1c2ggZnVuY3Rpb25zIGxpa2UgYGxpc3Rfc2V0X2ZsdXNoYCBhbmQgYG10eXBlX2ZsdXNoYCwgYnV0IHRoZXkncmUgYWxzbyBzdGF0aWMuIFNpbmNlIGBpcF9zZXRfZmx1c2hgIGlzIGRpcmVjdGx5IHJlbGV2YW50LCBJJ20gZ29pbmcgdG8gZm9jdXMgb24gaXQuIEFuZCwgc2luY2UgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBpcF9zZXRfYml0bWFwX2dlbi5oYCBhbmQgYGlwX3NldF9saXN0X3NldC5jYCwgSSdsbCBwcmlvcml0aXplIGluY2x1ZGluZyB0aGUgY29uZmlncyBhc3NvY2lhdGVkIHdpdGggdGhlc2UgbW9kdWxlcy5cblxuVGhlIGd1aWRhbmNlIHN1Z2dlc3RzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cy4gQWx0aG91Z2ggYGlwX3NldF9mbHVzaGAgaXMgc3RhdGljLCBiZWNhdXNlIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gaXQgd2lsbCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQgbWFrZXMgaXQgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiBmb3IgZnV6emluZy4gQWxzbywgYWx0aG91Z2ggYG10eXBlX2ZsdXNoYCBpcyB1c2VkIGluIHRoZSBgaXBfc2V0X2hhc2hfZ2VuLmhgIGFuZCB0aGUgcGF0Y2ggdG91Y2hlcyB0aGF0IGhlYWRlciwgdGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYGlwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgaXBfc2V0X2xpc3Rfc2V0LmNgLCBzbyBgSVBfU0VUX0hBU0hfKmAgY29uZmlncyBhcmUgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgdGhpcyBzcGVjaWZpYyBwYXRjaC5cblxuSSd2ZSBkZXRlcm1pbmVkIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmbHVzaCBvcGVyYXRpb25zIGZvciBiaXRtYXAgYW5kIGxpc3QgSVAgc2V0cy4gSXQgcmVtb3ZlcyByZWR1bmRhbnQgYXNzaWdubWVudHMgdGhhdCByZXNldCB0aGUgZWxlbWVudCBjb3VudCBhbmQgZXh0ZW5zaW9uIHNpemUgdG8gemVybywgYW5kIGl0IHJlcGxhY2VzIHRoZW0gd2l0aCBhIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFYCBhc3NlcnRpb24gdG8gY2hlY2sgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFscmVhZHkgemVyby4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIHRoZXJlIGlzIGEgYnVnIHdoZXJlIGVsZW1lbnRzIGFyZSBub3QgY29ycmVjdGx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy5cblxuVGhlcmVmb3JlLCBmb3IgbXkgZnV6emluZyBjb25maWd1cmF0aW9uLCBJJ2xsIG5lZWQ6XG5cbkNvbmZpZ3M6XG4qICAgYElORVRgXG4qICAgYE5FVEZJTFRFUmBcbiogICBgSVBfU0VUYFxuKiAgIGBJUF9TRVRfQklUTUFQX0lQYFxuKiAgIGBJUF9TRVRfQklUTUFQX0lQTUFDYFxuKiAgIGBJUF9TRVRfQklUTUFQX1BPUlRgXG4qICAgYElQX1NFVF9MSVNUX1NFVGBcblxuRm9jdXMgU3ltYm9sOlxuKiAgIGBpcF9zZXRfZmx1c2hgXG5cbkknbSBjb25maWRlbnQgdGhhdCBgaXBfc2V0X2ZsdXNoYCBpcyB0aGUgY29ycmVjdCBzeW1ib2wgdG8gdGFyZ2V0IGZvciBmb2N1c2VkIGZ1enppbmcgaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU2MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzo0OS4xOTEzNDg4NTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzY0NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF9mbHVzaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTEzMDI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMwMzppcF9zZXRfZmx1c2hfc2V0KHN0cnVjdCBpcF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMwNC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMxMjpzdGF0aWMgaW50IGlwX3NldF9mbHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzEzLVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cXHRcXHRcXHRpZiAocylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMyNjpcXHRcXHRcXHRcXHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVxcdFxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzMyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzMzOlxcdFxcdGlwX3NldF9mbHVzaF9zZXQocyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzQtXFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY1LVxcdFtJUFNFVF9DTURfRkxVU0hdXFx0PSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxNjY6XFx0XFx0LmNhbGxcXHRcXHQ9IGlwX3NldF9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ny1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9NVVRFWCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjc6NDkuMjM1MTE3NDEzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1MTA5NjQ4MDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVAgU2V0IEZsdXNoaW5nIE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSBgaXBfc2V0X2ZsdXNoYCBpcyB0aGUgbWFpbiBzeW1ib2wgdG8gZm9jdXMgb24gaGVyZS4gQnV0IGhvbGQgb24gYSBzZWNvbmTigKYgSSBuZWVkIHRvIGJlIHByZWNpc2UuIEl0IHNlZW1zIHRoZSBhY3R1YWwgZnVuY3Rpb25zIGRpcmVjdGx5IG1vZGlmaWVkIGFyZSBgbGlzdF9zZXRfZmx1c2hgIGFuZCBgbXR5cGVfZmx1c2hgLiBBaGEhIE5vdyBJIHJlbWVtYmVyOyBgbXR5cGVfZmx1c2hgIGlzIGEgbWFjcm8gb3IgdGVtcGxhdGUuIFRoYXQgbWVhbnMgaXQgbGlrZWx5IGV4cGFuZHMgdG8gZGlmZmVyZW50IGZ1bmN0aW9ucyBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlcyBpbnZvbHZlZC4gSW4gdGhpcyBjYXNlLCB0aGF0IGV4cGFuc2lvbiBsb29rcyBsaWtlIGl0IHJlc3VsdHMgaW4gYGJpdG1hcF9pcF9mbHVzaGAsIGBiaXRtYXBfaXBtYWNfZmx1c2hgLCBhbmQgYGJpdG1hcF9wb3J0X2ZsdXNoYC4gTm93LCBteSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlc2UgZ2VuZXJhdGVkIHN5bWJvbHMsIHRoZXNlIGRlcml2ZWQgZnVuY3Rpb25zLCBhY3R1YWxseSBleGlzdCBpbiB0aGUgY29tcGlsZWQgY29kZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiB0aGUgY2hhbmdlLiBMZXQgbWUgcXVpY2tseSBjb25maXJtIHRoZWlyIGV4aXN0ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzODgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyODoxNC4zNDQ3NjgzMjlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTE0NDE5MzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJpdG1hcF9pcF9mbHVzaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MTYuMzk2MjE2Mjk4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDU2MDU1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIHRoZSBgbXR5cGVfZmx1c2hgIERlZmluaXRpb24qKlxuXG5IbW0sIGxldCdzIHNlZS4uLiBgbXR5cGVfZmx1c2hgLiBSaWdodCwgaXQncyBkZWZpbmVkIGFzIGBJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKWAuIE9rYXksIHNvIGl0J3MgYSBtYWNybywgbm90IGEgZGlyZWN0IHZhcmlhYmxlIG9yIGZ1bmN0aW9uLiBOb3csIHdoYXQgZG9lcyBgSVBTRVRfVE9LRU5gIGFjdHVhbGx5ICpkbyo/IEkgbmVlZCB0byBjaGVjayBpdHMgZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIHdoYXQgYG10eXBlX2ZsdXNoYCByZWFsbHkgcmVwcmVzZW50cy4gVGhpcyBpcyBjcnVjaWFsIGZvciB0cmFjaW5nIHRoZSBjb2RlIGFuZCBlbnN1cmluZyBJJ20gbm90IG1pc3NpbmcgYW55IHVuZGVybHlpbmcgaW1wbGljYXRpb25zIG9yIHBvdGVudGlhbCBwaXRmYWxscyBpbiBob3cgdGhpcyBpcyBpbXBsZW1lbnRlZC4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBtYWNybyBkZWZpbml0aW9uIGl0c2VsZi4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODY4NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjIwLjgwMTgyMzYyNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3NTExMDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIElQU0VUX1RPS0VOXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oPTUyMz1uZl9pbmV0X2FkZHJfbWFza19pbnBsYWNlKHVuaW9uIG5mX2luZXRfYWRkciAqYTEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC01NDAtI2RlZmluZSBJUFNFVF9DT05DQVQoYSwgYilcXHRcXHRhIyNiXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg6NTQxOiNkZWZpbmUgSVBTRVRfVE9LRU4oYSwgYilcXHRcXHRJUFNFVF9DT05DQVQoYSwgYilcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC01NDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjIzLjE3NjkzOTM1NVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ1Njc1Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBNYWNyby1HZW5lcmF0ZWQgU3ltYm9scyoqXG5cbk9rYXksIHNvIGBJUFNFVF9UT0tFTihiaXRtYXBfaXAsIF9mbHVzaClgIGV4cGFuZHMgdG8gYGJpdG1hcF9pcF9mbHVzaGAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSSB3YXMgcHV6emxlZCB3aHkgYGdpdCBncmVwYCB3YXNuJ3QgZmluZGluZyBgYml0bWFwX2lwX2ZsdXNoYC4gT2YgY291cnNlLCBpdCdzIG1hY3JvLWdlbmVyYXRlZCEgVGhlIHNvdXJjZSBjb2RlIGRvZXNuJ3QgbGl0ZXJhbGx5IGNvbnRhaW4gdGhlIHN0cmluZyBcImJpdG1hcF9pcF9mbHVzaFwiOyB0aGUgY29tcGlsZXIgKmNyZWF0ZXMqIHRoYXQgc3ltYm9sLlxuXG5SaWdodCwgc28gdG8gdHJhY2UgdGhpcyB0aHJvdWdoLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgZ2VuZXJhdGVkIHN5bWJvbHMuIEknbGwgYWRkIGBiaXRtYXBfaXBfZmx1c2hgLCBgYml0bWFwX2lwbWFjX2ZsdXNoYCwgYGJpdG1hcF9wb3J0X2ZsdXNoYCwgYW5kIGBsaXN0X3NldF9mbHVzaGAgdG8gbXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLiBMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB0aGF0IGBsaXN0X3NldF9mbHVzaGAgaXMgYWxzbyBjb3JyZWN0bHkgZ2VuZXJhdGVkIGFuZCBiZWhhdmluZyBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwMzksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MjcuMzIyNjE4MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzE5NjI1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGlzdF9zZXRfZmx1c2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00MTU9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQxNjpsaXN0X3NldF9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00MTcte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NDM9bGlzdF9zZXRfY2FuY2VsX2djKHN0cnVjdCBpcF9zZXQgKnNldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTUwLVxcdC8qIEZsdXNoIGxpc3QgdG8gZHJvcCByZWZlcmVuY2VzIHRvIG90aGVyIGlwc2V0cyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTUxOlxcdGxpc3Rfc2V0X2ZsdXNoKHNldCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTItfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IHNldF92YXJpYW50ID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NjItXFx0LmRlc3Ryb3kgPSBsaXN0X3NldF9kZXN0cm95LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTYzOlxcdC5mbHVzaFxcdD0gbGlzdF9zZXRfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NjQtXFx0LmhlYWRcXHQ9IGxpc3Rfc2V0X2hlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjI5LjU5NDU4NTY3MloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA0OTY4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgUmVhc29uaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBsaXN0X3NldF9mbHVzaGAgaXMsIGluIGZhY3QsIHByZXNlbnQgaW4gdGhlIGNvZGViYXNlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSByZWxhdGVkIGZsdXNoIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIG15IHByaW1hcnkgZm9jdXMgZm9yIHRoaXMgbmV4dCBhbmFseXNpcy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gYWRkIHRoZXNlIHN5bWJvbHMgdG8gbXkgbWVudGFsIChhbmQgbm93IGFjdHVhbCkgbGlzdDogYGlwX3NldF9mbHVzaGAsIGBsaXN0X3NldF9mbHVzaGAsIGBiaXRtYXBfaXBfZmx1c2hgLCBgYml0bWFwX2lwbWFjX2ZsdXNoYCwgYW5kIGBiaXRtYXBfcG9ydF9mbHVzaGAuIE15IGxvZ2ljIGhlcmUgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNsZWFybHkgcGFydCBvZiB0aGUgcmVsYXRlZCBmbHVzaCBtZWNoYW5pc21zLlxuXG5Ob3csIGFzIGEgcmVtaW5kZXIgdG8gbXlzZWxmLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBrZWVwaW5nIHRyYWNrIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhpcyBzZXQgb2Ygb3BlcmF0aW9ucy4gSSdsbCBuZWVkIHRvIGtlZXAgaW4gbWluZDogYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGBJUF9TRVRfQklUTUFQX0lQYCwgYElQX1NFVF9CSVRNQVBfSVBNQUNgLCBgSVBfU0VUX0JJVE1BUF9QT1JUYCwgYW5kIGBJUF9TRVRfTElTVF9TRVRgLlxuXG5Ib2xkIG9uLCBJIHNlZSBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgdXNlZC4gU2luY2UgSSdtIGJlaW5nIHRob3JvdWdoLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoYXQgaGFzIGFueSBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCdzIGxvb2sgdGhhdCB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3MTgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MzQuMzk5NTU3NTU4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjgzOTUzOTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRFQlVHX05FVF9XQVJOX09OX09OQ0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MDQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jPTk4Mj1zdGF0aWMgaW50IGd2ZV9yeF9jb21wbGV0ZV9yc2Moc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTEwMjYtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM6MTAyNzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfZnJhZ19zaXplKGZyYWcpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0xMDI4LVxcdFxcdHNrYl9mcmFnX29mZl9hZGQoZnJhZywgaGRyX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWNzZWMuYz0xMDExPXN0YXRpYyBlbnVtIHJ4X2hhbmRsZXJfcmVzdWx0IGhhbmRsZV9ub3RfbWFjc2VjKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWNzZWMuYy0xMDQ4LVxcdFxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L21hY3NlYy5jOjEwNDk6XFx0XFx0XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghb3BzLVxcdTAwM2VyeF91c2VzX21kX2RzdCk7XFxuZHJpdmVycy9uZXQvbWFjc2VjLmMtMTA1MC1cXHRcXHRcXHRcXHRyeF9zYyA9IGZpbmRfcnhfc2MoXFx1MDAyNm1hY3NlYy1cXHUwMDNlc2VjeSxcXG4tLVxcbmRyaXZlcnMvbmV0L292cG4vY3J5cHRvX2FlYWQuYz01NT1zdGF0aWMgdW5zaWduZWQgaW50IG92cG5fYWVhZF9jcnlwdG9fdG1wX3NpemUoc3RydWN0IGNyeXB0b19hZWFkICp0Zm0sXFxuLS1cXG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmMtNTktXFxuZHJpdmVycy9uZXQvb3Zwbi9jcnlwdG9fYWVhZC5jOjYwOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoY3J5cHRvX2FlYWRfaXZzaXplKHRmbSkgIT0gT1ZQTl9OT05DRV9TSVpFKTtcXG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmMtNjEtXFxuLS1cXG5kcml2ZXJzL25ldC9vdnBuL2lvLmM9MzEyPXN0YXRpYyBib29sIG92cG5fZW5jcnlwdF9vbmUoc3RydWN0IG92cG5fcGVlciAqcGVlciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L292cG4vaW8uYy0zMjQtXFx0aWYgKHVubGlrZWx5KCFvdnBuX3BlZXJfaG9sZChwZWVyKSkpIHtcXG5kcml2ZXJzL25ldC9vdnBuL2lvLmM6MzI1OlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTMyNi1cXHRcXHRvdnBuX2NyeXB0b19rZXlfc2xvdF9wdXQoa3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvb3Zwbi90Y3AuYz01MTE9aW50IG92cG5fdGNwX3NvY2tldF9hdHRhY2goc3RydWN0IG92cG5fc29ja2V0ICpvdnBuX3NvY2ssXFxuLS1cXG5kcml2ZXJzL25ldC9vdnBuL3RjcC5jLTUzNy1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L292cG4vdGNwLmM6NTM4OlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxuZHJpdmVycy9uZXQvb3Zwbi90Y3AuYy01MzktXFx0XFx0Z290byBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjM1MD12b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjQ0MS1cXHRcXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNDQyOlxcdFxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI0NDMtXFx0XFx0XFx0Z290byBkcm9wO1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yNzEzPXN0cnVjdCBuZXRkZXZfcXVldWUgKm5ldGRldl9nZXRfdHhfcXVldWUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjcxNS17XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNzE2OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoaW5kZXggXFx1MDAzZT0gZGV2LVxcdTAwM2VudW1fdHhfcXVldWVzKTtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI3MTctXFx0cmV0dXJuIFxcdTAwMjZkZXYtXFx1MDAzZV90eFtpbmRleF07XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTExNjg9c3RhdGljIGlubGluZSB2b2lkIHNrYl9kc3RfY2hlY2tfdW5zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTExNjkte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTE3MDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKChza2ItXFx1MDAzZV9za2JfcmVmZHN0IFxcdTAwMjYgU0tCX0RTVF9QVFJNQVNLKSBcXHUwMDI2XFx1MDAyNlxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTE3MS1cXHRcXHRcXHQgICAgICAgIShza2ItXFx1MDAzZV9za2JfcmVmZHN0IFxcdTAwMjYgU0tCX0RTVF9OT1JFRikpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0yNjkwPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHN0cnVjdCBza19idWZmICpza2IsIGludCBpLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yNjkzLXtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjI2OTQ6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShzaXplIFxcdTAwM2UgdHJ1ZXNpemUpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjY5NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MjgyNT1zdGF0aWMgaW5saW5lIHZvaWQgKl9fc2tiX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4MjYte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MjgyNzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGxlbiBcXHUwMDNlIElOVF9NQVgpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjgyOC1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4MjktXFx0c2tiLVxcdTAwM2VkYXRhIC09IGxlbjtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjI4MzA6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXFx1MDAzZWRhdGEgXFx1MDAzYyBza2ItXFx1MDAzZWhlYWQpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjgzMS1cXHRza2ItXFx1MDAzZWxlbiAgKz0gbGVuO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0yODM2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCAqX19za2JfcHVsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjgzNy17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoyODM4OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobGVuIFxcdTAwM2UgSU5UX01BWCk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODM5LVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0yODYyPXBza2JfbWF5X3B1bGxfcmVhc29uKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODYzLXtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjI4NjQ6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXFx1MDAzZSBJTlRfTUFYKTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4NjUtXFx0c2tiX21pZ2h0X3JlYWxsb2Moc2tiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MzAwMD1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3Jlc2V0X21hY19sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzAwMi1cXHRpZiAoIXNrYl9tYWNfaGVhZGVyX3dhc19zZXQoc2tiKSkge1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzAwMzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzAwNC1cXHRcXHRza2ItXFx1MDAzZW1hY19sZW4gPSAwO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDIxPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfaW5uZXJfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDI0LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzAyNTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG9mZnNldCAhPSAodHlwZW9mKHNrYi1cXHUwMDNlaW5uZXJfdHJhbnNwb3J0X2hlYWRlcikpb2Zmc2V0KTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwMjYtXFx0c2tiLVxcdTAwM2Vpbm5lcl90cmFuc3BvcnRfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDQxPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfaW5uZXJfbmV0d29ya19oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA0NC1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjMwNDU6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXFx1MDAzZWlubmVyX25ldHdvcmtfaGVhZGVyKSlvZmZzZXQpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA0Ni1cXHRza2ItXFx1MDAzZWlubmVyX25ldHdvcmtfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDY2PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfaW5uZXJfbWFjX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDY5LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA3MDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG9mZnNldCAhPSAodHlwZW9mKHNrYi1cXHUwMDNlaW5uZXJfbWFjX2hlYWRlcikpb2Zmc2V0KTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwNzEtXFx0c2tiLVxcdTAwM2Vpbm5lcl9tYWNfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDg1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX3RyYW5zcG9ydF9oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwODYte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA4NzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfdHJhbnNwb3J0X2hlYWRlcl93YXNfc2V0KHNrYikpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA4OC1cXHRyZXR1cm4gc2tiLVxcdTAwM2VoZWFkICsgc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDkxPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDk0LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA5NTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG9mZnNldCAhPSAodHlwZW9mKHNrYi1cXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpb2Zmc2V0KTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwOTYtXFx0c2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMTM0PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzEzNy1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjMxMzg6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXFx1MDAzZW5ldHdvcmtfaGVhZGVyKSlvZmZzZXQpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzEzOS1cXHRza2ItXFx1MDAzZW5ldHdvcmtfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMTQ4PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX21hY19oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMxNDkte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzE1MDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfbWFjX2hlYWRlcl93YXNfc2V0KHNrYikpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE1MS1cXHRyZXR1cm4gc2tiLVxcdTAwM2VoZWFkICsgc2tiLVxcdTAwM2VtYWNfaGVhZGVyO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMTU5PXN0YXRpYyBpbmxpbmUgdTMyIHNrYl9tYWNfaGVhZGVyX2xlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE2MC17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMTYxOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNrYl9tYWNfaGVhZGVyX3dhc19zZXQoc2tiKSk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMTYyLVxcdHJldHVybiBza2ItXFx1MDAzZW5ldHdvcmtfaGVhZGVyIC0gc2tiLVxcdTAwM2VtYWNfaGVhZGVyO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMTcwPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfbWFjX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMTczLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzE3NDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG9mZnNldCAhPSAodHlwZW9mKHNrYi1cXHUwMDNlbWFjX2hlYWRlcikpb2Zmc2V0KTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMxNzUtXFx0c2tiLVxcdTAwM2VtYWNfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMjQxPXN0YXRpYyBpbmxpbmUgdTMyIHNrYl9uZXR3b3JrX2hlYWRlcl9sZW4oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMyNDIte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzI0MzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfdHJhbnNwb3J0X2hlYWRlcl93YXNfc2V0KHNrYikpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzI0NC1cXHRyZXR1cm4gc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyIC0gc2tiLVxcdTAwM2VuZXR3b3JrX2hlYWRlcjtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NDY1OD1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3Bvc3RwdWxsX2RhdGFfbW92ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00NjYxLXtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjQ2NjI6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXFx1MDAzZSBJTlRfTUFYKTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2NjMtXFx0c2tiX2RhdGFfbW92ZShza2IsIGxlbiwgbik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTQ2NzQ9c3RhdGljIGlubGluZSB2b2lkIHNrYl9wb3N0cHVzaF9kYXRhX21vdmUoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY3Ny17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo0Njc4OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobGVuIFxcdTAwM2UgSU5UX01BWCk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00Njc5LVxcdHNrYl9kYXRhX21vdmUoc2tiLCAtbGVuLCBuKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NTM0Mz1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX2NoZWNrc3VtX25vbmVfYXNzZXJ0KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01MzQ0LXtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjUzNDU6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXFx1MDAzZWlwX3N1bW1lZCAhPSBDSEVDS1NVTV9OT05FKTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTUzNDYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fdnNvY2suaD01MD1zdGF0aWMgaW5saW5lIHZvaWQgdmlydGlvX3Zzb2NrX3NrYl9wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxlbilcXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb192c29jay5oLTUxLXtcXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb192c29jay5oOjUyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVxcdTAwM2VsZW4pO1xcbmluY2x1ZGUvbGludXgvdmlydGlvX3Zzb2NrLmgtNTMtXFxuLS1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmg9MzQwPXN0YXRpYyBpbmxpbmUgdm9pZCBmaWI2X2luZm9fcmVsZWFzZShzdHJ1Y3QgZmliNl9pbmZvICpmNmkpXFxuLS1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMzQyLVxcdGlmIChmNmkgXFx1MDAyNlxcdTAwMjYgcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZmNmktXFx1MDAzZWZpYjZfcmVmKSkge1xcbmluY2x1ZGUvbmV0L2lwNl9maWIuaDozNDM6XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaGxpc3RfdW5oYXNoZWQoXFx1MDAyNmY2aS1cXHUwMDNlZ2NfbGluaykpO1xcbmluY2x1ZGUvbmV0L2lwNl9maWIuaC0zNDQtXFx0XFx0Y2FsbF9yY3VfaHVycnkoXFx1MDAyNmY2aS1cXHUwMDNlcmN1LCBmaWI2X2luZm9fZGVzdHJveV9yY3UpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmg9MTE0PWRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaC0xNTEtI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX05FVClcXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaDoxNTI6I2RlZmluZSBERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNvbmQpICgodm9pZClXQVJOX09OX09OQ0UoY29uZCkpXFxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmgtMTUzLSNkZWZpbmUgREVCVUdfTkVUX1dBUk5fT05DRShjb25kLCBmb3JtYXQuLi4pICgodm9pZClXQVJOX09OQ0UoY29uZCwgZm9ybWF0KSlcXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaC0xNTQtI2Vsc2VcXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaDoxNTU6I2RlZmluZSBERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNvbmQpIEJVSUxEX0JVR19PTl9JTlZBTElEKGNvbmQpXFxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmgtMTU2LSNkZWZpbmUgREVCVUdfTkVUX1dBUk5fT05DRShjb25kLCBmb3JtYXQuLi4pIEJVSUxEX0JVR19PTl9JTlZBTElEKGNvbmQpXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRsaW5rLmg9MjI2MT1zdGF0aWMgaW5saW5lIGludCBubGFfbmVzdF9lbmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sYXR0ciAqc3RhcnQpXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRsaW5rLmgtMjI2NC1cXG5pbmNsdWRlL25ldC9uZXRsaW5rLmg6MjI2NTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGRpZmYgXFx1MDAzZSBVMTZfTUFYKTtcXG5pbmNsdWRlL25ldC9uZXRsaW5rLmgtMjI2Ni1cXHRzdGFydC1cXHUwMDNlbmxhX2xlbiA9IGRpZmY7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRtZW0uaD0xNzE9c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2lvdiAqbmV0bWVtX3RvX25ldF9pb3YobmV0bWVtX3JlZiBuZXRtZW0pXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRtZW0uaC0xNzYtXFxuaW5jbHVkZS9uZXQvbmV0bWVtLmg6MTc3OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UodHJ1ZSk7XFxuaW5jbHVkZS9uZXQvbmV0bWVtLmgtMTc4LVxcdHJldHVybiBOVUxMO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bWVtLmg9MjEyPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBuZXRtZW1fcGZuX3RyYWNlKG5ldG1lbV9yZWYgbmV0bWVtKVxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bWVtLmgtMjMyLSh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbmV0L25ldG1lbS5oOjIzMzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFwYWdlX3Bvb2xfcGFnZV9pc19wcChwKSk7XFx0XFx0XFxcXFxcbmluY2x1ZGUvbmV0L25ldG1lbS5oLTIzNC1cXHRfX3BwX3BhZ2VfdG9fbm1kZXNjKHApO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbmV0L3JlcXVlc3Rfc29jay5oPTEyOD1zdGF0aWMgaW5saW5lIHZvaWQgcmVxc2tfZnJlZShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuaW5jbHVkZS9uZXQvcmVxdWVzdF9zb2NrLmgtMTI5LXtcXG5pbmNsdWRlL25ldC9yZXF1ZXN0X3NvY2suaDoxMzA6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShyZWZjb3VudF9yZWFkKFxcdTAwMjZyZXEtXFx1MDAzZXJza19yZWZjbnQpICE9IDApO1xcbmluY2x1ZGUvbmV0L3JlcXVlc3Rfc29jay5oLTEzMS1cXHRfX3JlcXNrX2ZyZWUocmVxKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg9OTA4PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHFkaXNjX3BrdF9zZWdzKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oLTkxMS1cXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oOjkxMjpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHBrdF9zZWdzICE9XFxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC05MTMtXFx0XFx0XFx0KHNrYl9pc19nc28oc2tiKSA/IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZ3NvX3NlZ3MgOiAxKSk7XFxuLS1cXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oPTEyMjY9c3RhdGljIGlubGluZSB2b2lkIHFkaXNjX2RlcXVldWVfZHJvcChzdHJ1Y3QgUWRpc2MgKnEsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oLTEyMzAtXFxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaDoxMjMxOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIShxLVxcdTAwM2VmbGFncyBcXHUwMDI2IFRDUV9GX0RFUVVFVUVfRFJPUFMpKTtcXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oOjEyMzI6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShxLVxcdTAwM2VmbGFncyBcXHUwMDI2IFRDUV9GX05PTE9DSyk7XFxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC0xMjMzLVxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTE4MjE9c3RhdGljIGlubGluZSB2b2lkIHNvY2tfcmVsZWFzZV9vd25lcnNoaXAoc3RydWN0IHNvY2sgKnNrKVxcbmluY2x1ZGUvbmV0L3NvY2suaC0xODIyLXtcXG5pbmNsdWRlL25ldC9zb2NrLmg6MTgyMzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFzb2NrX293bmVkX2J5X3VzZXJfbm9jaGVjayhzaykpO1xcbmluY2x1ZGUvbmV0L3NvY2suaC0xODI0LVxcdHNrLVxcdTAwM2Vza19sb2NrLm93bmVkID0gMDtcXG4tLVxcbmluY2x1ZGUvbmV0L3NvY2suaD0yNzk2PXN0YXRpYyBpbmxpbmUgaW50IHNrX2Ryb3BzX3JlYWQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oLTI4MDAtXFx0aWYgKG5kYykge1xcbmluY2x1ZGUvbmV0L3NvY2suaDoyODAxOlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoYXRvbWljX3JlYWQoXFx1MDAyNnNrLVxcdTAwM2Vza19kcm9wcykpO1xcbmluY2x1ZGUvbmV0L3NvY2suaC0yODAyLVxcdFxcdHJldHVybiBudW1hX2Ryb3BfcmVhZChuZGMpO1xcbi0tXFxuaW5jbHVkZS9uZXQvdGNwLmg9ODAzPXN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfYWRkX3JlY2VpdmVfcXVldWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbmV0L3RjcC5oLTgwNC17XFxuaW5jbHVkZS9uZXQvdGNwLmg6ODA1OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2RzdChza2IpKTtcXG5pbmNsdWRlL25ldC90Y3AuaDo4MDY6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShzZWNwYXRoX2V4aXN0cyhza2IpKTtcXG5pbmNsdWRlL25ldC90Y3AuaC04MDctXFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2c2stXFx1MDAzZXNrX3JlY2VpdmVfcXVldWUsIHNrYik7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz0zNTEwPXN0YXRpYyB1MTYgc2tiX3R4X2hhc2goY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTM1MzEtXFx0aWYgKHNrYl9yeF9xdWV1ZV9yZWNvcmRlZChza2IpKSB7XFxubmV0L2NvcmUvZGV2LmM6MzUzMjpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHFjb3VudCA9PSAwKTtcXG5uZXQvY29yZS9kZXYuYy0zNTMzLVxcdFxcdGhhc2ggPSBza2JfZ2V0X3J4X3F1ZXVlKHNrYik7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz00MTg1PXN0YXRpYyBpbmxpbmUgaW50IF9fZGV2X3htaXRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTQyNzYtXFxubmV0L2NvcmUvZGV2LmM6NDI3NzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYiAhPSBsbGlzdF9lbnRyeShsbF9saXN0LFxcbm5ldC9jb3JlL2Rldi5jLTQyNzgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZixcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTQzNDE9aW50IGRldl9sb29wYmFja194bWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNDM0Ny1cXHRcXHRza2ItXFx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZO1xcbm5ldC9jb3JlL2Rldi5jOjQzNDg6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX2RzdChza2IpKTtcXG5uZXQvY29yZS9kZXYuYy00MzQ5LVxcdHNrYl9kc3RfZm9yY2Uoc2tiKTtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTQ5NjU9c3RhdGljIGlubGluZSB2b2lkIF9fX19uYXBpX3NjaGVkdWxlKHN0cnVjdCBzb2Z0bmV0X2RhdGEgKnNkLFxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNDk5MC11c2VfbG9jYWxfbmFwaTpcXG5uZXQvY29yZS9kZXYuYzo0OTkxOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXFx1MDAyNm5hcGktXFx1MDAzZXBvbGxfbGlzdCkpO1xcbm5ldC9jb3JlL2Rldi5jLTQ5OTItXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2bmFwaS1cXHUwMDNlcG9sbF9saXN0LCBcXHUwMDI2c2QtXFx1MDAzZXBvbGxfbGlzdCk7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMDgwMz1zdGF0aWMgaW50IGRldl9pbmRleF9yZXNlcnZlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlmaW5kZXgpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMDgwNy1cXHRpZiAoaWZpbmRleCBcXHUwMDNlIElOVF9NQVgpIHtcXG5uZXQvY29yZS9kZXYuYzoxMDgwODpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbm5ldC9jb3JlL2Rldi5jLTEwODA5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2NvcmUvZHN0X2NhY2hlLmM9Mjg9c3RhdGljIHZvaWQgZHN0X2NhY2hlX3Blcl9jcHVfZHN0X3NldChzdHJ1Y3QgZHN0X2NhY2hlX3BjcHUgKmRzdF9jYWNoZSxcXG4tLVxcbm5ldC9jb3JlL2RzdF9jYWNoZS5jLTMwLXtcXG5uZXQvY29yZS9kc3RfY2FjaGUuYzozMTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFpbl9zb2Z0aXJxKCkpO1xcbm5ldC9jb3JlL2RzdF9jYWNoZS5jLTMyLVxcdGRzdF9yZWxlYXNlKGRzdF9jYWNoZS1cXHUwMDNlZHN0KTtcXG4tLVxcbm5ldC9jb3JlL2RzdF9jYWNoZS5jPTQwPXN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGVfcGVyX2NwdV9nZXQoc3RydWN0IGRzdF9jYWNoZSAqZHN0X2NhY2hlLFxcbi0tXFxubmV0L2NvcmUvZHN0X2NhY2hlLmMtNDQtXFxubmV0L2NvcmUvZHN0X2NhY2hlLmM6NDU6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaW5fc29mdGlycSgpKTtcXG5uZXQvY29yZS9kc3RfY2FjaGUuYy00Ni1cXHRkc3QgPSBpZHN0LVxcdTAwM2Vkc3Q7XFxuLS1cXG5uZXQvY29yZS9mbG93X2Rpc3NlY3Rvci5jPTEwNTc9Ym9vbCBfX3NrYl9mbG93X2Rpc3NlY3QoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L2NvcmUvZmxvd19kaXNzZWN0b3IuYy0xMTMwLVxcbm5ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmM6MTEzMTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFuZXQpO1xcbm5ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmMtMTEzMi1cXHRpZiAobmV0KSB7XFxuLS1cXG5uZXQvY29yZS9ncm8uYz00Mjg9c3RhdGljIHZvaWQgZ3JvX3B1bGxfZnJvbV9mcmFnMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZ3JvdylcXG4tLVxcbm5ldC9jb3JlL2dyby5jLTQzMS1cXG5uZXQvY29yZS9ncm8uYzo0MzI6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXFx1MDAzZWVuZCAtIHNrYi1cXHUwMDNldGFpbCBcXHUwMDNjIGdyb3cpO1xcbm5ldC9jb3JlL2dyby5jLTQzMy1cXG4tLVxcbm5ldC9jb3JlL2x3dHVubmVsLmM9NDMxPWludCBsd3R1bm5lbF9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvbHd0dW5uZWwuYy00MzctXFxubmV0L2NvcmUvbHd0dW5uZWwuYzo0Mzg6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaW5fc29mdGlycSgpKTtcXG5uZXQvY29yZS9sd3R1bm5lbC5jLTQzOS1cXG4tLVxcbm5ldC9jb3JlL25laWdoYm91ci5jPTYzPXN0YXRpYyBzdHJ1Y3QgaGxpc3RfaGVhZCAqbmVpZ2hfZ2V0X2Rldl90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgZmFtaWx5KVxcbi0tXFxubmV0L2NvcmUvbmVpZ2hib3VyLmMtNjgtXFx0ZGVmYXVsdDpcXG5uZXQvY29yZS9uZWlnaGJvdXIuYzo2OTpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbm5ldC9jb3JlL25laWdoYm91ci5jLTcwLVxcdFxcdGZhbGx0aHJvdWdoOyAvKiB0byBhdm9pZCBwYW5pYyBieSBudWxsLXB0ci1kZXJlZiAqL1xcbi0tXFxubmV0L2NvcmUvbmVpZ2hib3VyLmM9NDYxPXN0YXRpYyBpbnQgX19uZWlnaF9pZmRvd24oc3RydWN0IG5laWdoX3RhYmxlICp0YmwsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZWlnaGJvdXIuYy00NjctXFx0fSBlbHNlIHtcXG5uZXQvY29yZS9uZWlnaGJvdXIuYzo0Njg6XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2lwX3Blcm0pO1xcbm5ldC9jb3JlL25laWdoYm91ci5jLTQ2OS1cXHRcXHRuZWlnaF9mbHVzaF90YWJsZSh0YmwpO1xcbi0tXFxubmV0L2NvcmUvbmV0cG9sbC5jPTU0Nz1pbnQgbmV0cG9sbF9zZXR1cChzdHJ1Y3QgbmV0cG9sbCAqbnApXFxuLS1cXG5uZXQvY29yZS9uZXRwb2xsLmMtNjE5LXB1dDpcXG5uZXQvY29yZS9uZXRwb2xsLmM6NjIwOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobnAtXFx1MDAzZWRldik7XFxubmV0L2NvcmUvbmV0cG9sbC5jLTYyMS1cXHRpZiAoaXBfb3ZlcndyaXR0ZW4pXFxuLS1cXG5uZXQvY29yZS9ydG5ldGxpbmsuYz0zMTc9c3RhdGljIHZvaWQgcnRubF9uZXRzX2FkZChzdHJ1Y3QgcnRubF9uZXRzICpydG5sX25ldHMsIHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9jb3JlL3J0bmV0bGluay5jLTMyMC1cXG5uZXQvY29yZS9ydG5ldGxpbmsuYzozMjE6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShydG5sX25ldHMtXFx1MDAzZWxlbiA9PSBBUlJBWV9TSVpFKHJ0bmxfbmV0cy1cXHUwMDNlbmV0KSk7XFxubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzIyLVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9Njc0PXN0cnVjdCBza19idWZmICpfX2FsbG9jX3NrYih1bnNpZ25lZCBpbnQgc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy03MzMtXFx0XFx0QlVJTERfQlVHX09OKFNLQl9GQ0xPTkVfVU5BVkFJTEFCTEUgIT0gMCk7XFxubmV0L2NvcmUvc2tidWZmLmM6NzM0OlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVxcdTAwM2VmY2xvbmUgIT0gU0tCX0ZDTE9ORV9VTkFWQUlMQUJMRSk7XFxubmV0L2NvcmUvc2tidWZmLmMtNzM1LVxcdFxcdHNrYi1cXHUwMDNlZmNsb25lIHw9IFNLQl9GQ0xPTkVfT1JJRztcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTgzOD1zdHJ1Y3Qgc2tfYnVmZiAqbmFwaV9hbGxvY19za2Ioc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCB1bnNpZ25lZCBpbnQgbGVuKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtODQ1LVxcbm5ldC9jb3JlL3NrYnVmZi5jOjg0NjpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFpbl9zb2Z0aXJxKCkpO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTg0Ny1cXHRsZW4gKz0gTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR047XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz04OTc9dm9pZCBza2JfY29hbGVzY2VfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaSwgaW50IHNpemUsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy05MDEtXFxubmV0L2NvcmUvc2tidWZmLmM6OTAyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2l6ZSBcXHUwMDNlIHRydWVzaXplKTtcXG5uZXQvY29yZS9za2J1ZmYuYy05MDMtXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xMTY5PXZvaWQgc2tiX3JlbGVhc2VfaGVhZF9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTE3Mi1cXHRpZiAoc2tiLVxcdTAwM2VkZXN0cnVjdG9yKSB7XFxubmV0L2NvcmUvc2tidWZmLmM6MTE3MzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGluX2hhcmRpcnEoKSk7XFxubmV0L2NvcmUvc2tidWZmLmMtMTE3NC0jaWZkZWYgQ09ORklHX0lORVRcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTEyMTc9Ym9vbCBfX3NrX3NrYl9yZWFzb25fZHJvcChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0xMjIyLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjEyMjM6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShyZWFzb24gPT0gU0tCX05PVF9EUk9QUEVEX1lFVCB8fFxcbm5ldC9jb3JlL3NrYnVmZi5jLTEyMjQtXFx0XFx0XFx0ICAgICAgIHUzMl9nZXRfYml0cyhyZWFzb24sXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xNTE5PXZvaWQgbmFwaV9jb25zdW1lX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYnVkZ2V0KVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTUyNS1cXG5uZXQvY29yZS9za2J1ZmYuYzoxNTI2OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWluX3NvZnRpcnEoKSk7XFxubmV0L2NvcmUvc2tidWZmLmMtMTUyNy1cXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTQyNzQ9aW50IHNrYl9zaGlmdChzdHJ1Y3Qgc2tfYnVmZiAqdGd0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgc2hpZnRsZW4pXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy00Mjg1LVxcbm5ldC9jb3JlL3NrYnVmZi5jOjQyODY6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSh0Z3QtXFx1MDAzZXBwX3JlY3ljbGUgIT0gc2tiLVxcdTAwM2VwcF9yZWN5Y2xlKTtcXG5uZXQvY29yZS9za2J1ZmYuYzo0Mjg3OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2NtcF9kZWNyeXB0ZWQodGd0LCBza2IpKTtcXG5uZXQvY29yZS9za2J1ZmYuYy00Mjg4LVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9NDY3ND1zdHJ1Y3Qgc2tfYnVmZiAqc2tiX3NlZ21lbnRfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtNDY4NS1cXHQvKiBPbmx5IHNrYl9ncm9fcmVjZWl2ZV9saXN0IGdlbmVyYXRlZCBza2JzIGFycml2ZSBoZXJlICovXFxubmV0L2NvcmUvc2tidWZmLmM6NDY4NjpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCEoc2tiX3NoaW5mbyhza2IpLVxcdTAwM2Vnc29fdHlwZSBcXHUwMDI2IFNLQl9HU09fRlJBR0xJU1QpKTtcXG5uZXQvY29yZS9za2J1ZmYuYy00Njg3LVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtNDcwMC1cXG5uZXQvY29yZS9za2J1ZmYuYzo0NzAxOlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobnNrYi1cXHUwMDNlc2spO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTQ3MDItXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz03MzI1PW5vZGVmZXI6XFx0a2ZyZWVfc2tiX25hcGlfY2FjaGUoc2tiKTtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTczMjgtXFxubmV0L2NvcmUvc2tidWZmLmM6NzMyOTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9kc3Qoc2tiKSk7XFxubmV0L2NvcmUvc2tidWZmLmM6NzMzMDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYi1cXHUwMDNlZGVzdHJ1Y3Rvcik7XFxubmV0L2NvcmUvc2tidWZmLmM6NzMzMTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9uZmN0KHNrYikpO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTczMzItXFxuLS1cXG5uZXQvY29yZS9zb2NrLmM9MjQ4MD1zdHJ1Y3Qgc29jayAqc2tfY2xvbmUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBnZnBfdCBwcmlvcml0eSxcXG4tLVxcbm5ldC9jb3JlL3NvY2suYy0yNTM0LVxcdG5ld3NrLVxcdTAwM2Vza19yZXNlcnZlZF9tZW0gID0gMDtcXG5uZXQvY29yZS9zb2NrLmM6MjUzNTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5ld3NrLVxcdTAwM2Vza19kcm9wX2NvdW50ZXJzKTtcXG5uZXQvY29yZS9zb2NrLmMtMjUzNi1cXHRza19kcm9wc19yZXNldChuZXdzayk7XFxuLS1cXG5uZXQvY29yZS9zb2NrLmM9MzI0ND12b2lkIF9fcmVsZWFzZV9zb2NrKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9jb3JlL3NvY2suYy0zMjU4LVxcdFxcdFxcdHByZWZldGNoKG5leHQpO1xcbm5ldC9jb3JlL3NvY2suYzozMjU5OlxcdFxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2RzdF9pc19ub3JlZihza2IpKTtcXG5uZXQvY29yZS9zb2NrLmMtMzI2MC1cXHRcXHRcXHRza2JfbWFya19ub3Rfb25fbGlzdChza2IpO1xcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5oPTEyOT1zdGF0aWMgaW5saW5lIHZvaWQgZXRobmxfdXBkYXRlX3U4X3UzMih1OCAqZHN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5oLTEzNi1cXHR2YWwgPSBubGFfZ2V0X3UzMihhdHRyKTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg6MTM3OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UodmFsIFxcdTAwM2UgVThfTUFYKTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmgtMTM4LVxcdGlmICgqZHN0ID09IHZhbClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz00NzU9aW50IGlwX2ZpYl9jaGVja19kZWZhdWx0KF9fYmUzMiBndywgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy00ODItXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG5oLCBoZWFkLCBuaF9oYXNoKSB7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjQ4MzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5oLVxcdTAwM2VmaWJfbmhfZGV2ICE9IGRldik7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTQ4NC1cXHRcXHRpZiAobmgtXFx1MDAzZWZpYl9uaF9ndzQgPT0gZ3cgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xOTM2PXZvaWQgZmliX3N5bmNfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBvcmlnX210dSlcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTQxLVxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KG5oLCBoZWFkLCBuaF9oYXNoKSB7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5NDI6XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuaC1cXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTQzLVxcdFxcdGZpYl9uaGNfdXBkYXRlX210dShcXHUwMDI2bmgtXFx1MDAzZW5oX2NvbW1vbiwgZGV2LVxcdTAwM2VtdHUsIG9yaWdfbXR1KTtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xOTU1PWludCBmaWJfc3luY19kb3duX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50LCBib29sIGZvcmNlKVxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5NzAtXFx0XFx0QlVHX09OKCFmaS1cXHUwMDNlZmliX25ocyk7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5NzE6XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuaC1cXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTcyLVxcdFxcdGlmIChmaSA9PSBwcmV2X2ZpKVxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jPTIxMDQ9aW50IGZpYl9zeW5jX3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgbmhfZmxhZ3MpXFxuLS1cXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMjEyOS1cXHRcXHRCVUdfT04oIWZpLVxcdTAwM2VmaWJfbmhzKTtcXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM6MjEzMDpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5oLVxcdTAwM2VmaWJfbmhfZGV2ICE9IGRldik7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTIxMzEtXFx0XFx0aWYgKGZpID09IHByZXZfZmkpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2RpYWcuYz0yMDk9aW50IGluZXRfc2tfZGlhZ19maWxsKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrICppY3NrLFxcbi0tXFxubmV0L2lwdjQvaW5ldF9kaWFnLmMtMjI5LVxcdGhhbmRsZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGluZXRfZGlhZ190YWJsZVtwcm90b2NvbF0sIDEpO1xcbm5ldC9pcHY0L2luZXRfZGlhZy5jOjIzMDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFoYW5kbGVyKTtcXG5uZXQvaXB2NC9pbmV0X2RpYWcuYy0yMzEtXFx0aWYgKCFoYW5kbGVyKVxcbi0tXFxubmV0L2lwdjQvdGNwX2RpYWcuYz0xOTI9c3RhdGljIGludCB0Y3BfdHdza19kaWFnX2ZpbGwoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwX2RpYWcuYy0yMDgtXFx0ciA9IG5sbXNnX2RhdGEobmxoKTtcXG5uZXQvaXB2NC90Y3BfZGlhZy5jOjIwOTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHR3LVxcdTAwM2V0d19zdGF0ZSAhPSBUQ1BfVElNRV9XQUlUKTtcXG5uZXQvaXB2NC90Y3BfZGlhZy5jLTIxMC1cXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTMwODM9c3RhdGljIHZvaWQgdGNwX210dXBfcHJvYmVfc3VjY2VzcyhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0zMDkyLVxcdGRvX2Rpdih2YWwsIGljc2stXFx1MDAzZWljc2tfbXR1cC5wcm9iZV9zaXplKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzozMDkzOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoKHUzMil2YWwgIT0gdmFsKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0zMDk0LVxcdHRjcF9zbmRfY3duZF9zZXQodHAsIG1heF90KHUzMiwgMVUsIHZhbCkpO1xcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jPTE4NDQ9aW50IHRjcF9mcmFnbWVudChzdHJ1Y3Qgc29jayAqc2ssIGVudW0gdGNwX3F1ZXVlIHRjcF9xdWV1ZSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0xODU3LVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoxODU4OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2hlYWRsZW4oc2tiKSk7XFxubmV0L2lwdjQvdGNwX291dHB1dC5jLTE4NTktXFxuLS1cXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MTkzOT1zdGF0aWMgaW50IF9fcHNrYl90cmltX2hlYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbilcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0xOTQzLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoxOTQ0OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2hlYWRsZW4oc2tiKSk7XFxubmV0L2lwdjQvdGNwX291dHB1dC5jLTE5NDUtXFx0ZWF0ID0gbGVuO1xcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jPTI0MDA9c3RhdGljIGludCB0c29fZnJhZ21lbnQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jLTI0MDctXFx0LyogQWxsIG9mIGEgVFNPIGZyYW1lIG11c3QgYmUgY29tcG9zZWQgb2YgcGFnZWQgZGF0YS4gICovXFxubmV0L2lwdjQvdGNwX291dHB1dC5jOjI0MDg6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXFx1MDAzZWxlbiAhPSBza2ItXFx1MDAzZWRhdGFfbGVuKTtcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjQwOS1cXG4tLVxcbm5ldC9pcHY0L3VkcC5jPTI3NjA9ZW51bSBza2JfZHJvcF9yZWFzb24gdWRwX3Y0X2Vhcmx5X2RlbXV4KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC91ZHAuYy0yODAxLVxcdHNrYi1cXHUwMDNlc2sgPSBzaztcXG5uZXQvaXB2NC91ZHAuYzoyODAyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tfaXNfcmVmY291bnRlZChzaykpO1xcbm5ldC9pcHY0L3VkcC5jLTI4MDMtXFx0c2tiLVxcdTAwM2VkZXN0cnVjdG9yID0gc29ja19wZnJlZTtcXG4tLVxcbm5ldC9pcHY2L3VkcC5jPTEyMTI9dm9pZCB1ZHBfdjZfZWFybHlfZGVtdXgoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3VkcC5jLTEyMzgtXFx0c2tiLVxcdTAwM2VzayA9IHNrO1xcbm5ldC9pcHY2L3VkcC5jOjEyMzk6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza19pc19yZWZjb3VudGVkKHNrKSk7XFxubmV0L2lwdjYvdWRwLmMtMTI0MC1cXHRza2ItXFx1MDAzZWRlc3RydWN0b3IgPSBzb2NrX3BmcmVlO1xcbi0tXFxubmV0L21wdGNwL2Zhc3RvcGVuLmM9OT12b2lkIG1wdGNwX2Zhc3RvcGVuX3N1YmZsb3dfc3luYWNrX3NldF9wYXJhbXMoc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcXG4tLVxcbm5ldC9tcHRjcC9mYXN0b3Blbi5jLTUzLVxcdG1wdGNwX2RhdGFfbG9jayhzayk7XFxubmV0L21wdGNwL2Zhc3RvcGVuLmM6NTQ6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShzb2NrX293bmVkX2J5X3VzZXJfbm9jaGVjayhzaykpO1xcbm5ldC9tcHRjcC9mYXN0b3Blbi5jLTU1LVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9NzEyPXN0YXRpYyBib29sIF9fbXB0Y3BfbW92ZV9za2JzX2Zyb21fc3ViZmxvdyhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNzY0LVxcdFxcdFxcdGlmICh1bmxpa2VseShtYXBfcmVtYWluaW5nIFxcdTAwM2MgbGVuKSkge1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjc2NTpcXHRcXHRcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTc2Ni1cXHRcXHRcXHRcXHRtcHRjcF9kc3NfY29ycnVwdGlvbihtc2ssIHNzayk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy03NjktXFx0XFx0XFx0aWYgKHVubGlrZWx5KCFmaW4pKSB7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6NzcwOlxcdFxcdFxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtNzcxLVxcdFxcdFxcdFxcdG1wdGNwX2Rzc19jb3JydXB0aW9uKG1zaywgc3NrKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTIyMzU9c3RhdGljIGJvb2wgbXB0Y3BfY2FuX3Nwb29sX2JhY2tsb2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbGlzdF9oZWFkICpza2JzKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjI0MS1cXHQgKi9cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyMjQyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobXNrLVxcdTAwM2ViYWNrbG9nX3VuYWNjb3VudGVkIFxcdTAwMjZcXHUwMDI2IHNrLVxcdTAwM2Vza19zb2NrZXQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yMjQzLVxcdFxcdFxcdCAgICAgICBtZW1fY2dyb3VwX2Zyb21fc2soc2spKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oPTY5NT1zdGF0aWMgaW5saW5lIHZvaWQgbXB0Y3BfYm9ycm93X2Z3ZG1lbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC03MDEtXFx0ICovXFxubmV0L21wdGNwL3Byb3RvY29sLmg6NzAyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVxcdTAwM2VkZXN0cnVjdG9yKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC03MDMtXFx0c2tfZm9yd2FyZF9hbGxvY19hZGQoc2ssIHNrYi1cXHUwMDNldHJ1ZXNpemUpO1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz05OTQ9c3RhdGljIGJvb2wgc2tiX2lzX2Z1bGx5X21hcHBlZChzdHJ1Y3Qgc29jayAqc3NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMDAwLVxcdGlmICh1bmxpa2VseShza2JfY29uc3VtZWQgXFx1MDAzZT0gc2tiLVxcdTAwM2VsZW4pKSB7XFxubmV0L21wdGNwL3N1YmZsb3cuYzoxMDAxOlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMDAyLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oPTcyPW10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC03OS1cXHRzZXQtXFx1MDAzZWVsZW1lbnRzID0gMDtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6ODA6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShhdG9taWM2NF9yZWFkKFxcdTAwMjZzZXQtXFx1MDAzZWV4dF9zaXplKSBcXHUwMDNlIDApO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC04MS19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQxNj1saXN0X3NldF9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MzYuNjgzNTE2OTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI2MTQ4NTM4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgbWFjcm8sIGFuZCBpdCdzIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L25ldF9kZWJ1Zy5oYC4gQSBxdWljayBjaGVjayBzaG93cyB0aGF0IGl0J3MgZ2F0ZWQgYnkgYENPTkZJR19ERUJVR19ORVRgLiBJZiB0aGF0J3MgKm5vdCogZW5hYmxlZCwgdGhlIG1hY3JvIGVmZmVjdGl2ZWx5IHR1cm5zIGludG8gYSBjb21waWxlLXRpbWUgY2hlY2sgdXNpbmcgYEJVSUxEX0JVR19PTl9JTlZBTElEKGNvbmQpYC4gIFNvLCB0aGUgb25seSB3YXkgSSdtIGdvaW5nIHRvIGFjdHVhbGx5IHNlZSB0aGlzIHRoaW5nICp3YXJuKiBhdCBydW50aW1lIGlzIGlmIGBDT05GSUdfREVCVUdfTkVUYCBpcyBmbGlwcGVkIG9uLiBSaWdodCwgbWFrZXMgc2Vuc2UuXG5cbkdpdmVuIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIHdoaWNoIGluY2x1ZGVzIGBJTkVUYCwgYE5FVEZJTFRFUmAsIHZhcmlvdXMgYElQX1NFVGAgb3B0aW9ucyBsaWtlIGJpdG1hcCBhbmQgbGlzdCBzZXRzLCBpdCBzZWVtcyBsaWtlIG5ldHdvcmsgZGVidWdnaW5nIHdvdWxkIGJlIHZhbHVhYmxlIGhlcmUuIFNvLCBJJ20gZ29pbmcgdG8gYWRkIGBERUJVR19ORVRgIHRvIHRoZSBleGlzdGluZyBsaXN0IG9mIGNvbmZpZ3MuIE1ha2VzIHRoZSBtb3N0IHNlbnNlIGluIHRoaXMgY29udGV4dC5cblxuTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUgYERFQlVHX05FVGAgaXMgaW5kZWVkIGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gdGhpcyBlbnZpcm9ubWVudC4gR290dGEgYmUgY2VydGFpbiBiZWZvcmUgSSBnbyBtZXNzaW5nIHdpdGggdGhlIGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDg3NCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyODo1OS4yOTgzNzM0NDJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjcwNjQ1MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFQlVHX05FVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZy5kZWJ1Zz0xMj1jb25maWcgTkVUX05TX1JFRkNOVF9UUkFDS0VSXFxuLS1cXG5uZXQvS2NvbmZpZy5kZWJ1Zy0yMC1cXG5uZXQvS2NvbmZpZy5kZWJ1ZzoyMTpjb25maWcgREVCVUdfTkVUXFxubmV0L0tjb25maWcuZGVidWctMjItXFx0Ym9vbCBcXFwiQWRkIGdlbmVyaWMgbmV0d29ya2luZyBkZWJ1Z1xcXCJcXG4tLVxcbm5ldC9LY29uZmlnLmRlYnVnLTI3LVxcbm5ldC9LY29uZmlnLmRlYnVnOjI4OmNvbmZpZyBERUJVR19ORVRfU01BTExfUlROTFxcbm5ldC9LY29uZmlnLmRlYnVnLTI5LVxcdGJvb2wgXFxcIkFkZCBleHRyYSBwZXItbmV0bnMgbXV0ZXggaW5zaWRlIFJUTkxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI5OjAxLjUyNTQ0NjgzNVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTgxMjI4MjE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRmx1c2ggT3BlcmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgREVCVUdfTkVUYCBpcyBpbmRlZWQgZW5hYmxlZC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSd2ZSBnb3QgdGhlIHJlbGV2YW50IGNvbmZpZ3MgaGVyZTogYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGBJUF9TRVRfQklUTUFQX0lQYCwgYElQX1NFVF9CSVRNQVBfSVBNQUNgLCBgSVBfU0VUX0JJVE1BUF9QT1JUYCwgYElQX1NFVF9MSVNUX1NFVGAsIGFuZCwgb2YgY291cnNlLCBgREVCVUdfTkVUYC5cblxuTm93LCBJJ20gZm9jdXNpbmcgb24gdGhlIGtleSBzeW1ib2xzOiBgaXBfc2V0X2ZsdXNoYCwgYGxpc3Rfc2V0X2ZsdXNoYCwgYGJpdG1hcF9pcF9mbHVzaGAsIGBiaXRtYXBfaXBtYWNfZmx1c2hgLCBhbmQgYGJpdG1hcF9wb3J0X2ZsdXNoYC4gVGhlIGBiaXRtYXBfKl9mbHVzaGAgZnVuY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgYElQU0VUX1RPS0VOKGJpdG1hcF9pcCwgX2ZsdXNoKWAuIEkgbmVlZCB0byBlbnN1cmUgdGhleSdyZSBhY2Nlc3NpYmxlLlxuXG5MZXQncyBzZWUuLi4gbG9va2luZyBhdCBgaXBfc2V0X2JpdG1hcF9nZW4uaGAsIEkgZmluZCBgc3RhdGljIHZvaWQgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KWAuIFRoZSBrZXl3b3JkIFwic3RhdGljXCIgaW5pdGlhbGx5IHJhaXNlZCBhIGNvbmNlcm4sIGFzIEkgdGhvdWdodCBpdCBtaWdodCBiZSBpbmxpbmVkIGFuZCB0aGVyZWZvcmUgbm90IHByZXNlbnQgYXMgYSBzZXBhcmF0ZSBzeW1ib2wuIEJ1dCwgZnVydGhlciBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBtdHlwZV92YXJpYW50YCBzdHJ1Y3Q6XG5cbmBgYGNcbnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZSA9IHtcblx0LmthZHRcdD0gbXR5cGVfa2FkdCxcblx0LnVhZHRcdD0gbXR5cGVfdWFkdCxcblx0LmFkdFx0PSB7XG5cdFx0W0lQU0VUX0FERF0gPSBtdHlwZV9hZGQsXG5cdFx0W0lQU0VUX0RFTF0gPSBtdHlwZV9kZWwsXG5cdFx0W0lQU0VUX1RFU1RdID0gbXR5cGVfdGVzdCxcblx0fSxcblx0LmRlc3Ryb3kgPSBtdHlwZV9kZXN0cm95LFxuXHQuZmx1c2hcdD0gbXR5cGVfZmx1c2gsXG4uLi5cbmBgYFxuXG5UaGF0IGFzc2lnbm1lbnQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIG1lYW5zIGl0IHdvbid0IGJlIGlubGluZWQuIFNvLCBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGFuZCBgYml0bWFwX3BvcnRfZmx1c2hgIHdpbGwgYmUgcHJlc2VudCBhcyBkaXN0aW5jdCBzeW1ib2xzLiBQZXJmZWN0LiBJJ2xsIGluY2x1ZGUgdGhlbSBpbiBteSBhbmFseXNpcy5cblxuTm93LCBsZXQncyByZWNhcCBteSByZWFzb25pbmcuIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBmbHVzaCBvcGVyYXRpb25zIGZvciBiaXRtYXAgYW5kIGxpc3QgSVAgc2V0cy4gRXNzZW50aWFsbHksIGl0IHJlbW92ZXMgdGhlIHJlZHVuZGFudCBhc3NpZ25tZW50cyB0aGF0IHdlcmUgcmVzZXR0aW5nIGVsZW1lbnQgY291bnRzIGFuZCBleHRlbnNpb24gc2l6ZXMgdG8gemVyby4gSW5zdGVhZCwgaXQgYWRkcyBhIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFYCB0byB2ZXJpZnkgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFscmVhZHkgemVyby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgbW92ZXMgYXdheSBmcm9tIHNpbGVudGx5IG1hc2tpbmcgYW55IGlzc3VlcyB3aGVyZSBlbGVtZW50IGNvdW50cyBhcmVuJ3QgcHJvcGVybHkgZGVjcmVtZW50ZWQuIE5vdywgaW5zdGVhZCBvZiBoaWRpbmcgdGhlIGJ1ZywgYSB3YXJuaW5nIHdpbGwgYmUgdHJpZ2dlcmVkLCBhbmQgdGhlIHN0YXRlIHdpbGwgcmVtYWluIG5vbi16ZXJvLiBGdXp6aW5nIGlzIGNyaXRpY2FsIGhlcmUgdG8gdmFsaWRhdGUgdGhhdCBlbGVtZW50IGNvdW50cyBhcmUgYWNjdXJhdGVseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuXG5cbkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE0NTgsIk91dHB1dFRva2VucyI6MjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjMwOjMxLjMzNzczNTc4MloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTE1MTM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBNQUNcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfUE9SVFwiLFxuICAgIFwiSVBfU0VUX0xJU1RfU0VUXCIsXG4gICAgXCJERUJVR19ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImxpc3Rfc2V0X2ZsdXNoXCIsXG4gICAgXCJiaXRtYXBfaXBfZmx1c2hcIixcbiAgICBcImJpdG1hcF9pcG1hY19mbHVzaFwiLFxuICAgIFwiYml0bWFwX3BvcnRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpbnN0ZWFkIGFkZHMgYSBERUJVR19ORVRfV0FSTl9PTl9PTkNFIHRvIGFzc2VydCB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIGEgYnVnIGV4aXN0cyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IHByb3Blcmx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZyBhbmQgbGVhdmUgdGhlIHN0YXRlIG5vbi16ZXJvLCByYXRoZXIgdGhhbiBzaWxlbnRseSBoaWRpbmcgdGhlIGJ1Zy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCIsXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIklQX1NFVFwiLFxuICAgIFwiSVBfU0VUX0JJVE1BUF9JUFwiLFxuICAgIFwiSVBfU0VUX0JJVE1BUF9JUE1BQ1wiLFxuICAgIFwiSVBfU0VUX0JJVE1BUF9QT1JUXCIsXG4gICAgXCJJUF9TRVRfTElTVF9TRVRcIixcbiAgICBcIkRFQlVHX05FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwibGlzdF9zZXRfZmx1c2hcIixcbiAgICBcImJpdG1hcF9pcF9mbHVzaFwiLFxuICAgIFwiYml0bWFwX2lwbWFjX2ZsdXNoXCIsXG4gICAgXCJiaXRtYXBfcG9ydF9mbHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmbHVzaCBvcGVyYXRpb25zIGZvciBiaXRtYXAgYW5kIGxpc3QgSVAgc2V0cyBieSByZW1vdmluZyByZWR1bmRhbnQgYXNzaWdubWVudHMgdGhhdCByZXNldCB0aGUgZWxlbWVudCBjb3VudCBhbmQgZXh0ZW5zaW9uIHNpemUgdG8gemVybywgYW5kIGluc3RlYWQgYWRkcyBhIERFQlVHX05FVF9XQVJOX09OX09OQ0UgdG8gYXNzZXJ0IHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBhbHJlYWR5IHplcm8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IHJlbW92ZXMgc3RhdGUtcmVzZXR0aW5nIGFzc2lnbm1lbnRzLCBtZWFuaW5nIHRoYXQgaWYgYSBidWcgZXhpc3RzIHdoZXJlIGVsZW1lbnRzIGFyZSBub3QgcHJvcGVybHkgZGVjcmVtZW50ZWQsIGl0IHdpbGwgbm93IHRyaWdnZXIgYSB3YXJuaW5nIGFuZCBsZWF2ZSB0aGUgc3RhdGUgbm9uLXplcm8sIHJhdGhlciB0aGFuIHNpbGVudGx5IGhpZGluZyB0aGUgYnVnLiBGdXp6aW5nIHRoaXMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgY291bnRzIGFyZSBjb3JyZWN0bHkgbWFuYWdlZCBkdXJpbmcgc2V0IG9wZXJhdGlvbnMgYW5kIGZsdXNoaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjbx7v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 16:24:14 +0000 UTC FinishedAt: 2026-08-06 16:30:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "NETFILTER", "IP_SET", "IP_SET_BITMAP_IP", "IP_SET_BITMAP_IPMAC", "IP_SET_BITMAP_PORT", "IP_SET_LIST_SET", "DEBUG_NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "NETFILTER", "IP_SET", "IP_SET_BITMAP_IP", "IP_SET_BITMAP_IPMAC", "IP_SET_BITMAP_PORT", "IP_SET_LIST_SET", "DEBUG_NET" ], "series_id": "ddf873ae-e178-4e5b-81ab-87cf5e785777" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_set_flush", "list_set_flush", "bitmap_ip_flush", "bitmap_ipmac_flush", "bitmap_port_flush" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lQX1NFVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfQklUTUFQX0lQJiMzNDssCiAgICAmIzM0O0lQX1NFVF9CSVRNQVBfSVBNQUMmIzM0OywKICAgICYjMzQ7SVBfU0VUX0JJVE1BUF9QT1JUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9MSVNUX1NFVCYjMzQ7LAogICAgJiMzNDtERUJVR19ORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF9zZXRfZmx1c2gmIzM0OywKICAgICYjMzQ7bGlzdF9zZXRfZmx1c2gmIzM0OywKICAgICYjMzQ7Yml0bWFwX2lwX2ZsdXNoJiMzNDssCiAgICAmIzM0O2JpdG1hcF9pcG1hY19mbHVzaCYjMzQ7LAogICAgJiMzNDtiaXRtYXBfcG9ydF9mbHVzaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpbnN0ZWFkIGFkZHMgYSBERUJVR19ORVRfV0FSTl9PTl9PTkNFIHRvIGFzc2VydCB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIGEgYnVnIGV4aXN0cyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IHByb3Blcmx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZyBhbmQgbGVhdmUgdGhlIHN0YXRlIG5vbi16ZXJvLCByYXRoZXIgdGhhbiBzaWxlbnRseSBoaWRpbmcgdGhlIGJ1Zy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE0OGY1ZWVlZTJmOGNjY2FiYTRiNGI4ZjdkNDRiYjQzOWU3YjA4ZTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDE2OjI1OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaCBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaFxuaW5kZXggMjI2ZmRmMTdiNjgzMi4uZDZhN2U2NjA0NTQyMiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oXG5AQCAtNzcsNyAmIzQzOzc3LDcgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuIFx0XHRtdHlwZV9leHRfY2xlYW51cChzZXQpO1xuIFx0Yml0bWFwX3plcm8obWFwLVx1MDAzZW1lbWJlcnMsIG1hcC1cdTAwM2VlbGVtZW50cyk7XG4gXHRzZXQtXHUwMDNlZWxlbWVudHMgPSAwO1xuLVx0YXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7XG4mIzQzO1x0REVCVUdfTkVUX1dBUk5fT05fT05DRShhdG9taWM2NF9yZWFkKFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSkgXHUwMDNlIDApO1xuIH1cbiBcbiAvKiBDYWxjdWxhdGUgdGhlIGFjdHVhbCBtZW1vcnkgc2l6ZSBvZiB0aGUgc2V0IGRhdGEgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xuaW5kZXggY2EzZWY5NDc5ZTgzOC4uMDI0ZGUzYmM5ZmMzYyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmNcbkBAIC00MjAsOCAmIzQzOzQyMCw3IEBAIGxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCBcdTAwMjZtYXAtXHUwMDNlbWVtYmVycywgbGlzdClcbiBcdFx0bGlzdF9zZXRfZGVsKHNldCwgZSk7XG4tXHRzZXQtXHUwMDNlZWxlbWVudHMgPSAwO1xuLVx0YXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7XG4mIzQzO1x0REVCVUdfTkVUX1dBUk5fT05fT05DRShzZXQtXHUwMDNlZWxlbWVudHMgXHUwMDNlIDApO1xuIH1cbiBcbiBzdGF0aWMgdm9pZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0JJVE1BUF9JUCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfQklUTUFQX0lQTUFDJiMzNDssCiAgICAmIzM0O0lQX1NFVF9CSVRNQVBfUE9SVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OywKICAgICYjMzQ7REVCVUdfTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2xpc3Rfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2JpdG1hcF9pcF9mbHVzaCYjMzQ7LAogICAgJiMzNDtiaXRtYXBfaXBtYWNfZmx1c2gmIzM0OywKICAgICYjMzQ7Yml0bWFwX3BvcnRfZmx1c2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZsdXNoIG9wZXJhdGlvbnMgZm9yIGJpdG1hcCBhbmQgbGlzdCBJUCBzZXRzIGJ5IHJlbW92aW5nIHJlZHVuZGFudCBhc3NpZ25tZW50cyB0aGF0IHJlc2V0IHRoZSBlbGVtZW50IGNvdW50IGFuZCBleHRlbnNpb24gc2l6ZSB0byB6ZXJvLCBhbmQgaW5zdGVhZCBhZGRzIGEgREVCVUdfTkVUX1dBUk5fT05fT05DRSB0byBhc3NlcnQgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFscmVhZHkgemVyby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgcmVtb3ZlcyBzdGF0ZS1yZXNldHRpbmcgYXNzaWdubWVudHMsIG1lYW5pbmcgdGhhdCBpZiBhIGJ1ZyBleGlzdHMgd2hlcmUgZWxlbWVudHMgYXJlIG5vdCBwcm9wZXJseSBkZWNyZW1lbnRlZCwgaXQgd2lsbCBub3cgdHJpZ2dlciBhIHdhcm5pbmcgYW5kIGxlYXZlIHRoZSBzdGF0ZSBub24temVybywgcmF0aGVyIHRoYW4gc2lsZW50bHkgaGlkaW5nIHRoZSBidWcuIEZ1enppbmcgdGhpcyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBjb3VudHMgYXJlIGNvcnJlY3RseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNDhmNWVlZWUyZjhjY2NhYmE0YjRiOGY3ZDQ0YmI0MzllN2IwOGUxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgNiAxNjoyNToyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaCBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaAppbmRleCAyMjZmZGYxN2I2ODMyLi5kNmE3ZTY2MDQ1NDIyIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oCkBAIC03Nyw3ICYjNDM7NzcsNyBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpCiAJCW10eXBlX2V4dF9jbGVhbnVwKHNldCk7CiAJYml0bWFwX3plcm8obWFwLSZndDttZW1iZXJzLCBtYXAtJmd0O2VsZW1lbnRzKTsKIAlzZXQtJmd0O2VsZW1lbnRzID0gMDsKLQlhdG9taWM2NF9zZXQoJmFtcDtzZXQtJmd0O2V4dF9zaXplLCAwKTsKJiM0MzsJREVCVUdfTkVUX1dBUk5fT05fT05DRShhdG9taWM2NF9yZWFkKCZhbXA7c2V0LSZndDtleHRfc2l6ZSkgJmd0OyAwKTsKIH0KIAogLyogQ2FsY3VsYXRlIHRoZSBhY3R1YWwgbWVtb3J5IHNpemUgb2YgdGhlIHNldCBkYXRhICovCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYwppbmRleCBjYTNlZjk0NzllODM4Li4wMjRkZTNiYzlmYzNjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMKQEAgLTQyMCw4ICYjNDM7NDIwLDcgQEAgbGlzdF9zZXRfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIG4sICZhbXA7bWFwLSZndDttZW1iZXJzLCBsaXN0KQogCQlsaXN0X3NldF9kZWwoc2V0LCBlKTsKLQlzZXQtJmd0O2VsZW1lbnRzID0gMDsKLQlhdG9taWM2NF9zZXQoJmFtcDtzZXQtJmd0O2V4dF9zaXplLCAwKTsKJiM0MzsJREVCVUdfTkVUX1dBUk5fT05fT05DRShzZXQtJmd0O2VsZW1lbnRzICZndDsgMCk7CiB9CiAKIHN0YXRpYyB2b2lkCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2g6IFBvdGVudGlhbCBGdW5jdGlvbmFsIENoYW5nZXMgYW5kIEZ1enppbmcgQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgcmVwbGFjaW5nIGFzc2lnbm1lbnRzIHdpdGggYERFQlVHX05FVF9XQVJOX09OX09OQ0VgIGNoZWNrcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSBgYXRvbWljNjRfc2V0KCZhbXA7c2V0LSZndDtleHRfc2l6ZSwgMCk7YCBpbiBgbXR5cGVfZmx1c2hgIGlzIGJlaW5nIHJlcGxhY2VkLCBhbmQgc2ltaWxhcmx5LCBgc2V0LSZndDtlbGVtZW50cyA9IDA7IGF0b21pYzY0X3NldCgmYW1wO3NldC0mZ3Q7ZXh0X3NpemUsIDApO2AgaW4gYGxpc3Rfc2V0X2ZsdXNoYCBpcyBnZXR0aW5nIHN3YXBwZWQgb3V0LgoKSW5pdGlhbGx5LCBteSB0aG91Z2h0IHdhcywgJiMzNDtXYWl0LCB0aGlzIHJlbW92ZXMgdGhlIHJlc2V0dGluZyBvZiB0aG9zZSB2YXJpYWJsZXMgYW5kIGp1c3QgcHV0cyBhIGRlYnVnIHdhcm5pbmcgdGhlcmU/JiMzNDsgVGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJpZ2h0PyBJdCYjMzk7cyAqcmVtb3ZpbmcqIGFuIGFzc2lnbm1lbnQsIG5vdCBqdXN0IGFkZGluZyBsb2dnaW5nLiBUaGF0JiMzOTtzIGEgc2hpZnQgaW4gYmVoYXZpb3IuCgpUaGVuIEkgcGF1c2VkIGFuZCB0aG91Z2h0LCAmIzM0O0hvbGQgb24sIGlzIGl0IGp1c3QgYSBkZWJ1ZyB3YXJuaW5nLCBvciBkb2VzIHRoaXMgYWN0dWFsbHkgKmNoYW5nZSogaG93IHRoZSBzeXN0ZW0gd29ya3M/JiMzNDsgTGV0JiMzOTtzIGRpZyBhIGJpdCBkZWVwZXIuIFRha2luZyBhIGxvb2sgYXQgYGxpc3Rfc2V0X2ZsdXNoYDoKCmBgYGMKCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCAmYW1wO21hcC0mZ3Q7bWVtYmVycywgbGlzdCkKCQlsaXN0X3NldF9kZWwoc2V0LCBlKTsKLQlzZXQtJmd0O2VsZW1lbnRzID0gMDsKLQlhdG9taWM2NF9zZXQoJmFtcDtzZXQtJmd0O2V4dF9zaXplLCAwKTsKJiM0MzsJREVCVUdfTkVUX1dBUk5fT05fT05DRShzZXQtJmd0O2VsZW1lbnRzICZndDsgMCk7CmBgYAoKTXkgZ3Vlc3MgaXMgdGhhdCBgbGlzdF9zZXRfZGVsYCBwcm9iYWJseSAqYWxyZWFkeSogZGVjcmVtZW50cyBgc2V0LSZndDtlbGVtZW50c2AgYW5kIGBzZXQtJmd0O2V4dF9zaXplYC4gVGhhdCBtZWFucyB0aGUgcmVzZXQgdG8gMCB3YXMgcmVkdW5kYW50LiBJZiBzbywgaXQmIzM5O3MgcG9zc2libGUgdGhhdCByZXNldHRpbmcgdGhlc2UgdmFyaWFibGVzIHdhcyBoaWRpbmcgYSBidWcsIGFuZCBub3csIGl0IHdpbGwgbm90IGJlIHJlc2V0LiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBub3csIGlmIGEgYnVnICpkaWQqIGV4aXN0IGFuZCBzb21laG93IGxlZnQgdGhlIGNvdW50cyBub24temVybywgaXQgd291bGQgc3RheSB0aGF0IHdheSBhbmQgd2Ugd291bGQgYmUgYWxlcnRlZCBieSB0aGUgZGVidWcgd2FybmluZy4KClRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsICYjMzQ7SXMgdGhpcyBzaWduaWZpY2FudCBlbm91Z2ggdG8gd2FycmFudCBmdXp6aW5nPyYjMzQ7IEkgdGhpbmsgc28uIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHNlbnNlIHRoYXQgaWYgdGhlcmUmIzM5O3MgYW4gaXNzdWUgbGVhZGluZyB0byBpbmNvcnJlY3QgY291bnRzLCB0aGlzIHdpbGwgZXhwb3NlIGl0LCBvciBhdCBsZWFzdCB3YXJuIHVzLiBTbywgZXZlbiB0aG91Z2ggaXQgbG9va3MgbGlrZSBzaW1wbGUgcmVtb3ZhbCBvZiBwb3RlbnRpYWxseSByZWR1bmRhbnQgYXNzaWdubWVudHMsIGl0IGNvdWxkIHJldmVhbCBleGlzdGluZywgbWFza2VkIHByb2JsZW1zLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gdmVyaWZ5IGBsaXN0X3NldF9mbHVzaGAgYW5kIGBtdHlwZV9mbHVzaGAgdG8gZW5zdXJlIHRoaXMgaXMgdGhlIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGlzdF9zZXRfZmx1c2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00MTU9c3RhdGljIHZvaWRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDE2Omxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNDE3LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU0Mz1saXN0X3NldF9jYW5jZWxfZ2Moc3RydWN0IGlwX3NldCAqc2V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTUwLVx0LyogRmx1c2ggbGlzdCB0byBkcm9wIHJlZmVyZW5jZXMgdG8gb3RoZXIgaXBzZXRzICovXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjU1MTpcdGxpc3Rfc2V0X2ZsdXNoKHNldCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU1Mi19XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IHNldF92YXJpYW50ID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTYyLVx0LmRlc3Ryb3kgPSBsaXN0X3NldF9kZXN0cm95LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjM6XHQuZmx1c2hcdD0gbGlzdF9zZXRfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2NC1cdC5oZWFkXHQ9IGxpc3Rfc2V0X2hlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc0MAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBgaXBzZXRfYml0bWFwX2dlbi5oYCBNeXN0ZXJ5KioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhgIGhlYWRlciBmaWxlLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGBtdHlwZV9mbHVzaGAgaXMgZ29pbmcgb24gaGVyZS4gSXQmIzM5O3MgdXN1YWxseSB3b3J0aCBkb3VibGUtY2hlY2tpbmcgdGhlIGxvdy1sZXZlbCBjb2RlIHRoYXQgY291bGQgaW1wYWN0IGJpdG1hcCBvcGVyYXRpb25zIGluIElQIHNldHMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gYG10eXBlX2ZsdXNoYCBhbmQgdGhlIGJpdG1hcCBnZW5lcmF0aW9uIHNwZWNpZmljYWxseSwgYXMgdGhpcyBjb3VsZCBoYXZlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb24gbWVtb3J5IG1hbmFnZW1lbnQgb3IgYXRvbWljaXR5IGR1cmluZyBmbHVzaCBvcGVyYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHdheSB0aGUgYml0bWFwIHN0cnVjdHVyZXMgYXJlIGhhbmRsZWQgZHVyaW5nIHRoaXMgc3BlY2lmaWMgcHJvY2Vzcy4gQW55IHVuZXhwZWN0ZWQgYmVoYXZpb3IgaGVyZSBhbmQgaXQgY291bGQgYmUgdGhlIHNvdXJjZSBvZiBhIHN1YnRsZSwgYnV0IGNyaXRpY2FsLCBidWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXR5cGVfZmx1c2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oLTIzLSNkZWZpbmUgbXR5cGVfbWVtc2l6ZVx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX21lbXNpemUpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6MjQ6I2RlZmluZSBtdHlwZV9mbHVzaFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oLTI1LSNkZWZpbmUgbXR5cGVfaGVhZFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2hlYWQpXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oPTcxPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6NzI6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oLTczLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg9MzAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmgtMzEwLVx0LmRlc3Ryb3kgPSBtdHlwZV9kZXN0cm95LFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oOjMxMTpcdC5mbHVzaFx0PSBtdHlwZV9mbHVzaCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC0zMTItXHQuaGVhZFx0PSBtdHlwZV9oZWFkLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTY0PXN0YXRpYyBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgemVyb21hc2sgPSB7fTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE5OS0jdW5kZWYgbXR5cGVfYWhhc2hfbWVtc2l6ZVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyMDA6I3VuZGVmIG10eXBlX2ZsdXNoXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIwMS0jdW5kZWYgbXR5cGVfZGVzdHJveVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjQ3LSNkZWZpbmUgbXR5cGVfYWhhc2hfbWVtc2l6ZVx0SVBTRVRfVE9LRU4oTVRZUEUsIF9haGFzaF9tZW1zaXplKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoyNDg6I2RlZmluZSBtdHlwZV9mbHVzaFx0XHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNDktI2RlZmluZSBtdHlwZV9kZXN0cm95XHRcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVzdHJveSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oPTQ0OT1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo0NTA6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC00NTEte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgbXR5cGVfdmFyaWFudCA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE1NjYtXHQuZGVzdHJveSA9IG10eXBlX2Rlc3Ryb3ksXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjE1Njc6XHQuZmx1c2hcdD0gbXR5cGVfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTE1NjgtXHQuaGVhZFx0PSBtdHlwZV9oZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3ODAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYW4gSVBzZXQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgcmVhY3Rpb24gaXMgYSBtaXggb2YgaW50cmlndWUgYW5kIGNvbmNlcm4uIEl0IHByaW1hcmlseSB0b3VjaGVzIGBpcF9zZXRfYml0bWFwX2dlbi5oYCBhbmQgYGlwX3NldF9saXN0X3NldC5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBtdHlwZV9mbHVzaGAgYW5kIGBsaXN0X3NldF9mbHVzaGAgZnVuY3Rpb25zLiBJdCBzZWVtcyB0byBiZSBjbGVhbmluZyB1cCBzb21lIHN0YXRlIHJlc2V0IGxvZ2ljLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlcGVyY3Vzc2lvbnMuCgpJbiBgaXBfc2V0X2JpdG1hcF9nZW4uaGAsIHRoZSBwYXRjaCByZW1vdmVzIGBhdG9taWM2NF9zZXQoJmFtcDtzZXQtJmd0O2V4dF9zaXplLCAwKTtgIGFmdGVyIHplcm9pbmcgb3V0IHRoZSBiaXRtYXAgYW5kIHJlc2V0dGluZyBgc2V0LSZndDtlbGVtZW50c2AgaW4gYG10eXBlX2ZsdXNoYC4gVGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBJdCBhbHNvIGFkZHMgYSBkZWJ1ZyB3YXJuaW5nLiBOb3csIHRoZSB3ZWlyZCBwYXJ0IGlzIGBtdHlwZV9mbHVzaGAgc3RpbGwgaGFzIGBzZXQtJmd0O2VsZW1lbnRzID0gMDtgLiBUaGlzIGluY29uc2lzdGVuY3kgaXMgYSByZWQgZmxhZy4KClRoZSBgaXBfc2V0X2xpc3Rfc2V0LmNgIGNoYW5nZXMgYXJlIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcuIGBsaXN0X3NldF9mbHVzaGAgdXNlZCB0byByZXNldCAqYm90aCogYHNldC0mZ3Q7ZWxlbWVudHNgIGFuZCBgc2V0LSZndDtleHRfc2l6ZWAuIFRoZSBwYXRjaCByZW1vdmVzIHRoZXNlIGFzc2lnbm1lbnRzIGFuZCBhZGRzIGEgZGVidWcgd2FybmluZyBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgdG8gY2hlY2sgaWYgYHNldC0mZ3Q7ZWxlbWVudHNgIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlLiBJZiB0aGUgb3JpZ2luYWwgY29kZSAqcmVsaWVkKiBvbiB0aGVzZSBhc3NpZ25tZW50cyAoYW5kIEkmIzM5O20gc3VzcGljaW91cyB0aGF0IGl0IG1pZ2h0KSwgdGhlbiB3ZSBoYXZlIGEgcG90ZW50aWFsIHJlZ3Jlc3Npb24uIElmIHRoZXkgd2VyZSByZWR1bmRhbnQsIHRoZW4gdGhpcyBpcyBhIGNsZWFudXAsIGFuZCB0aGUgZGVidWcgd2FybmluZyBpcyBhIHNhZmV0eSBuZXQuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIG5ldHdvcmsgY29kZSwgYW5kIG15IGV4cGVyaWVuY2UgaW4gdGhpcyBmaWVsZCwgdGhlIHByZXNlbmNlIG9mIHRoZSBkZWJ1ZyB3YXJuaW5nIGFuZCB0aGUgYXNzaWdubWVudHMmIzM5OyByZW1vdmFsIHNjcmVhbSAmIzM0O2Z1enogdGhpcyYjMzQ7LiAgRXZlbiBpZiB0aGUgYXNzaWdubWVudHMgd2VyZSByZWR1bmRhbnQsIHJlbW92aW5nIHRoZW0gY291bGQgZXhwb3NlIGEgc3VidGxlIGJ1ZywgbGlrZSBhIG1pc3NpbmcgZGVjcmVtZW50IHNvbWV3aGVyZS4gSWYgYHNldC0mZ3Q7ZWxlbWVudHNgIG9yIGBzZXQtJmd0O2V4dF9zaXplYCBhcmVuJiMzOTt0IGJlaW5nIHByb3Blcmx5IG1hbmFnZWQsIHRoaXMgcGF0Y2ggd2lsbCBtYWtlIHRoZSBpc3N1ZSB2aXNpYmxlIHdpdGggYSB3YXJuaW5nLCBhbmQgbGlrZWx5IHVuY292ZXIgc29tZSBzZXJpb3VzIGNvcm5lciBjYXNlIGlzc3Vlcy4gVGhpcyBtYWtlcyBpdCBhbiBpZGVhbCB0YXJnZXQgZm9yIHN5emthbGxlci4gVGhlIGRlYnVnIHdhcm5pbmcgd2lsbCBxdWlja2x5IGJyaW5nIGFueSBpbmNvcnJlY3QgdmFsdWVzIHRvIGxpZ2h0LCBhbmQgdGhlIHJlbW92ZWQgYXNzaWdubWVudHMgb3BlbiB0aGUgZG9vciB0byBhbGwgc29ydHMgb2Ygb3RoZXIgcHJvYmxlbXMuCgpTbywgdGhlIGtleSBmdW5jdGlvbnMgaGVyZSBhcmUgYGxpc3Rfc2V0X2ZsdXNoYCBhbmQgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIGBtdHlwZV9mbHVzaGAuIGBsaXN0X3NldF9mbHVzaGAgaXMgc3RhdGljIGFuZCBhc3NpZ25lZCB0byBgLmZsdXNoYCBpbiBgc2V0X3ZhcmlhbnRgLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBgaXBfc2V0X2ZsdXNoYCBpbiBgaXBfc2V0X2NvcmUuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGNhbGxlZCBhbmQgd2hhdCB0aGUgcG9zc2libGUgaW50ZXJhY3Rpb24gc2NlbmFyaW9zIGFyZS4gSSB3aWxsIG5lZWQgdG8gbG9vayBkZWVwZXIgaW50byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzAyPXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMwMzppcF9zZXRfZmx1c2hfc2V0KHN0cnVjdCBpcF9zZXQgKnNldClcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzA0LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzEyOnN0YXRpYyBpbnQgaXBfc2V0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMy1cdFx0XHRjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI1LVx0XHRcdGlmIChzKVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMjY6XHRcdFx0XHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjctXHRcdH1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzMi1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzMzOlx0XHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzQtXHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2NS1cdFtJUFNFVF9DTURfRkxVU0hdXHQ9IHtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTY2Olx0XHQuY2FsbFx0XHQ9IGlwX3NldF9mbHVzaCxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY3LVx0XHQudHlwZVx0XHQ9IE5GTkxfQ0JfTVVURVgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ0MAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBGbHVzaGluZyBNZWNoYW5pc20qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBJUCBzZXQgZmx1c2hpbmcgaXMgaW1wbGVtZW50ZWQuIEl0IGxvb2tzIGxpa2UgYGlwX3NldF9mbHVzaGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBmbHVzaCBvcGVyYXRpb24gaXRzZWxmLiBUaGF0IG1ha2VzIHNlbnNlLCB0aGUgY29kZSBoYXMgdG8gYmVnaW4gc29tZXdoZXJlLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgc2VlIGEgYG10eXBlX2ZsdXNoYCB0ZW1wbGF0ZSwgc3BlY2lmaWNhbGx5IGluIGBpcF9zZXRfYml0bWFwX2dlbi5oYC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIHJlYWwgbWFnaWMgaGFwcGVucy4gSXQgbG9va3MgbGlrZSB0aGlzIHRlbXBsYXRlIGlzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBhY3R1YWwgZmx1c2ggZnVuY3Rpb25zIGZvciBkaWZmZXJlbnQgZGF0YSB0eXBlcy4gVGhleSYjMzk7cmUgcHJvYmFibHkgaW5zdGFudGlhdGVkIHRvIGNyZWF0ZSBmdW5jdGlvbnMgbGlrZSBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGFuZCBgYml0bWFwX3BvcnRfZmx1c2hgLiBUaGlzIGFwcHJvYWNoIGlzIGZhaXJseSBlZmZpY2llbnQgYXMgaXQgYWxsb3dzIHRoZW0gdG8gcmV1c2UgdGhlIHNhbWUgc3RydWN0dXJlLCBidXQgd2l0aCB2YXJpYXRpb25zIHRvIGhhbmRsZSB0aGUgZGlmZmVyZW50IHVuZGVybHlpbmcgZGF0YS4gSW50ZXJlc3RpbmcgdXNlIG9mIHRlbXBsYXRlcyB0aGVyZS4gSSYjMzk7ZCBoYXZlIHRvIGxvb2sgZnVydGhlciB0byBzZWUgd2hhdCBkZWZpbmVzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiaXRtYXBfaXBfZmx1c2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzU0CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRGVjb2RpbmcgdGhhdCBNYWNybzogQSBEZWVwIERpdmUqKgoKQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG10eXBlX2ZsdXNoYCBtYWNybyBkZWZpbml0aW9uIGFuZCBpdCYjMzk7cyBzdGFydGluZyB0byB0cmlnZ2VyIHNvbWUgYWxhcm1zLiBJdCYjMzk7cyBkZWZpbmVkIGFzIGAjZGVmaW5lIG10eXBlX2ZsdXNoIElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpYC4gT2theSwgc28gYG10eXBlX2ZsdXNoYCBpcyBiZWluZyBjb25zdHJ1Y3RlZCB2aWEgYSBtYWNybywgd2hpY2ggaXNuJiMzOTt0IHVudXN1YWwsIGJ1dCB0aGUgYE1UWVBFYCBwYXJ0IGlzIHRoZSBrZXkuIFRoYXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCwgYW5kIEkgc3VzcGVjdCBpdCYjMzk7cyBwb2ludGluZyBtZSB0byBzb21lIGNvcmUgc3RydWN0dXJlIG9yIHR5cGUgZGVmaW5pdGlvbi4KClRpbWUgdG8gc3dpdGNoIGdlYXJzLiBMZXQmIzM5O3MgZGlnIGludG8gYGlwX3NldF9iaXRtYXBfaXAuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCB0aGlzIGVsdXNpdmUgYE1UWVBFYCBhY3R1YWxseSAqaXMqLiBUaGlzIGtpbmQgb2YgbWFjcm8gZGFuY2UgaXMgb2Z0ZW4gaG93IHRoZXkgYWJzdHJhY3QgYXdheSB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMsIHByb2JhYmx5IGZvciBmbGV4aWJpbGl0eSBvciBwbGF0Zm9ybS1zcGVjaWZpYyByZWFzb25zLiBJIG5lZWQgdG8gdW5yYXZlbCB0aGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoYXQgYG10eXBlX2ZsdXNoYCBpcyB1bHRpbWF0ZWx5IHJlZmVycmluZyB0by4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyEgVGltZSB0byByZXZlcnNlIGVuZ2luZWVyLiBMZXQmIzM5O3MgZ28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgTVRZUEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmM9MzM9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9iaXRtYXA6aXBcJiMzNDspO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmMtMzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYzozNTojZGVmaW5lIE1UWVBFXHRcdGJpdG1hcF9pcFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmMtMzYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmM9MzM9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9iaXRtYXA6aXAsbWFjXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jLTM0LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmM6MzU6I2RlZmluZSBNVFlQRVx0XHRiaXRtYXBfaXBtYWNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jLTM2LSNkZWZpbmUgSE9TVF9NQVNLXHQzMlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM9Mjc9TU9EVUxFX0FMSUFTKFwmIzM0O2lwX3NldF9iaXRtYXA6cG9ydFwmIzM0Oyk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jLTI4LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYzoyOTojZGVmaW5lIE1UWVBFXHRcdGJpdG1hcF9wb3J0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jLTMwLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYz03MD1oYXNoX2lwNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA0X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNF9lbGVtICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy03NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYzo3NTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXA0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtNzYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jPTIwMj1oYXNoX2lwNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA2X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNl9lbGVtICplKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy0yMDgtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM6MjA5OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcDZcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy0yMTAtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYz03Mj1oYXNoX2lwbWFjNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTc3LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jOjc4OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9pcG1hYzRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYy03OS0jZGVmaW5lIFBGXHRcdDRcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmM9MTgwPWhhc2hfaXBtYWM2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcG1hYzZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtMTg5LVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jOjE5MDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBtYWM2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtMTkxLSNkZWZpbmUgUEZcdFx0NlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM9Njk9aGFzaF9pcG1hcms0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcG1hcms0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy03NC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM6NzU6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwbWFyazRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtNzYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYz0yMDU9aGFzaF9pcG1hcms2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcG1hcms2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy0yMTItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jOjIxMzojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBtYXJrNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy0yMTQtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM9Nzk9aGFzaF9pcHBvcnQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnQ0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy04NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM6ODY6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtODctI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYz0yNDk9aGFzaF9pcHBvcnQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy0yNTctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jOjI1ODojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBwb3J0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy0yNTktI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYz03Nz1oYXNoX2lwcG9ydGlwNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0aXA0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jLTg0LS8qIENvbW1vbiBmdW5jdGlvbnMgKi9cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYzo4NTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBwb3J0aXA0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmMtODYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jPTI0OD1oYXNoX2lwcG9ydGlwNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBwb3J0aXA2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jLTI1Ni1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYzoyNTc6I2RlZmluZSBNVFlQRVx0XHRoYXNoX2lwcG9ydGlwNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jLTI1OC0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYz0xMjE9aGFzaF9pcHBvcnRuZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRuZXQ0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy0xMjgtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjEyOTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBwb3J0bmV0NFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy0xMzAtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYz0zNzk9aGFzaF9pcHBvcnRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRuZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy0zODctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jOjM4ODojZGVmaW5lIE1UWVBFXHRcdGhhc2hfaXBwb3J0bmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRuZXQuYy0zODktI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmM9NjE9aGFzaF9tYWM0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9tYWM0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYy02NS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmM6NjY6I2RlZmluZSBNVFlQRVx0XHRoYXNoX21hYzRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmMtNjctI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0xMDI9aGFzaF9uZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXQ0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMDctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjEwODojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0NFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0xMDktI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYz0yNzM9aGFzaF9uZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0yODAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jOjI4MTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXQuYy0yODItI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYz0xMjk9aGFzaF9uZXRpZmFjZTRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldGlmYWNlNF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xMzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM6MTM1OiNkZWZpbmUgTVRZUEVcdFx0aGFzaF9uZXRpZmFjZTRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0xMzYtI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTM2Mz1oYXNoX25ldGlmYWNlNl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM3MC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzozNzE6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldGlmYWNlNlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTM3Mi0jZGVmaW5lIEhPU1RfTUFTS1x0MTI4XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0xMjU9aGFzaF9uZXRuZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRuZXQ0X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0xMzAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjEzMTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0bmV0NFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0xMzItI2RlZmluZSBIT1NUX01BU0tcdDMyXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYz0zNjM9aGFzaF9uZXRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRuZXQ2X2VsZW0gKm5leHQsXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0zNzAtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jOjM3MTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0bmV0NlxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRuZXQuYy0zNzItI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTExNz1oYXNoX25ldHBvcnQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyMy1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjEyNDojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0cG9ydDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTEyNS0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYz0zMzQ9aGFzaF9uZXRwb3J0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYzozNDM6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0zNDQtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTEzMj1oYXNoX25ldHBvcnRuZXQ0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0bmV0NF9lbGVtICpuZXh0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTEzOC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjEzOTojZGVmaW5lIE1UWVBFXHRcdGhhc2hfbmV0cG9ydG5ldDRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTE0MC0jZGVmaW5lIEhPU1RfTUFTS1x0MzJcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYz00MjY9aGFzaF9uZXRwb3J0bmV0Nl9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0cG9ydG5ldDZfZWxlbSAqbmV4dCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy00MzQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYzo0MzU6I2RlZmluZSBNVFlQRVx0XHRoYXNoX25ldHBvcnRuZXQ2XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy00MzYtI2RlZmluZSBIT1NUX01BU0tcdDEyOFxuLS1cbnNvdW5kL3BjaS9hc2locGkvaHBpNjIwNS5jPTE2MDA9c3RhdGljIHUxNiBib290X2xvYWRlcl9jb25maWdfZW1pZihzdHJ1Y3QgaHBpX2FkYXB0ZXJfb2JqICpwYW8sIGludCBkc3BfaW5kZXgpXG4tLVxuc291bmQvcGNpL2FzaWhwaS9ocGk2MjA1LmMtMTYyMC0jZGVmaW5lIFJTVF9PRlMgOFxuc291bmQvcGNpL2FzaWhwaS9ocGk2MjA1LmM6MTYyMTojZGVmaW5lIE1UWVBFX09GUyA0XG5zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYy0xNjIyLSNkZWZpbmUgUkhfT0ZTIDBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NDMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpcF9zZXQgRmx1c2ggRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBgaXBfc2V0X2ZsdXNoYCBhcHBlYXJzIHRvIGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBmbHVzaGluZyBzZXRzLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2g7IGBtdHlwZV9mbHVzaGAgYWxzbyBzZWVtcyB0byBiZSByZWxldmFudCwgYXMgaXQmIzM5O3MgdXNlZCB3aXRoaW4gYGlwX3NldF9oYXNoX2dlbi5oYC4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIGlmIHRoYXQgaGVhZGVyIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgcmVjZW50bHkuIExldCBtZSBjaGVjayB0aGUgZGlmZi4uLiBOb3BlLCBpdCBsb29rcyBsaWtlIG9ubHkgYGlwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgaXBfc2V0X2xpc3Rfc2V0LmNgIGhhdmUgY2hhbmdlcy4gU28gYGlwX3NldF9oYXNoX2dlbi5oYCBpcyBsaWtlbHkgbm90IHRoZSBmb2N1cyBoZXJlLgoKUmlnaHQsIGJhY2sgdG8gYG10eXBlX2ZsdXNoYC4gSXQmIzM5O3MgdXNlZCBpbiBgaXBfc2V0X2JpdG1hcF9nZW4uaGAgZm9yIGBiaXRtYXBfaXBgLCBgYml0bWFwX2lwbWFjYCwgYW5kIGBiaXRtYXBfcG9ydGAuIFRoaXMgbWVhbnMgdGhhdCBgaXBfc2V0X2ZsdXNoYCBpcyBzdGlsbCB0aGUgbWFpbiBmb2N1cyBidXQgaXQgaXMgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhlIGNvbm5lY3Rpb24gd2l0aCB0aGUgYml0bWFwIHNldHMuCgpOb3csIGxldCYjMzk7cyBkZXRlcm1pbmUgdGhlIHJlYWNoYWJpbGl0eSBhbmQgYW55IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGZvciBgaXBfc2V0X2ZsdXNoYC4gSXQmIzM5O3MgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jYC4gQXMgZm9yIHRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQsIGl0IHNlZW1zIHdlJiMzOTtyZSBsb29raW5nIGF0IGBDT05GSUdfSVBfU0VUYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX0lQYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX0lQTUFDYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX1BPUlRgLCBhbmQgYENPTkZJR19JUF9TRVRfTElTVF9TRVRgLiBFeGNlbGxlbnQsIHRoYXQgY292ZXJzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBiaXRtYXAgc2V0IHZhcmlhbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0VUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjI6bWVudWNvbmZpZyBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTQ9aWYgSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY6Y29uZmlnIElQX1NFVF9NQVhcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiBJUCBzZXRzXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjI4OmNvbmZpZyBJUF9TRVRfQklUTUFQX0lQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtiaXRtYXA6aXAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzYtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mzc6Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O2JpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDUtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDY6Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTQtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTU6Y29uZmlnIElQX1NFVF9IQVNIX0lQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY0LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjY1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy02Ni1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03My1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NDpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6ODM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVElQXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsaXAgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNC1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6aXAsbWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMTI6Y29uZmlnIElQX1NFVF9IQVNIX01BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bWFjIHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMC1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMjE6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjktXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMwOmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzEtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzgtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTM5OmNvbmZpZyBJUF9TRVRfSEFTSF9ORVRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDAtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxuZXQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE0ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU3LVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE1ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUSUZBQ0Vcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNTktXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxpZmFjZSBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjctXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTY4OmNvbmZpZyBJUF9TRVRfTElTVF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjktXHR0cmlzdGF0ZSBcJiMzNDtsaXN0OnNldCBzZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ5MwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgZGVsdmUgaW50byB0aGVzZSBjb25maWd1cmF0aW9uczoKCioqRGVlcCBEaXZlIGludG8gSVBzZXQgQ29uZmlndXJhdGlvbnMgYW5kIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgSVBzZXQgY29uZmlndXJhdGlvbnM6IGBJUF9TRVRgLCBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYElQX1NFVF9CSVRNQVBfUE9SVGAsIGFuZCBgSVBfU0VUX0xJU1RfU0VUYC4gSXQmIzM5O3MgYSBzdGFuZGFyZCBzZXQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGNsZWFybHkuIFdhaXQgYSBtaW51dGXigKYgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGBJUF9TRVRgIGlzIGJ1aWx0IG9uIHRvcCBvZiBgTkVURklMVEVSYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpbnRlcmFjdGlvbiBhbmQgYW55IGltcGxpY2F0aW9ucyBpdCBtaWdodCBoYXZlIGZvciBteSBzcGVjaWZpYyB1c2UgY2FzZSwgc28gbGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgbmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnYC4gVGltZSB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiBob3cgdGhlc2UgZWxlbWVudHMgd29yayB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mj1tZW51Y29uZmlnIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJUCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTUtXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY9Y29uZmlnIElQX1NFVF9NQVhcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTktXHRyYW5nZSAyIDY1NTM0XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MjA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTIxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yOD1jb25maWcgSVBfU0VUX0JJVE1BUF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MzA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTMxLVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0zNz1jb25maWcgSVBfU0VUX0JJVE1BUF9JUE1BQ1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOmlwLG1hYyBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM5Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy00MC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NDY9Y29uZmlnIElQX1NFVF9CSVRNQVBfUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVx0dHJpc3RhdGUgXCYjMzQ7Yml0bWFwOnBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDktXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTU1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjU3Olx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01OC1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9NjU9Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFSS1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY2LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYXJrIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Njc6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTY4LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz03ND1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo3NjpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzctXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTgzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6ODU6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTg2LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz05Mz1jb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOmlwLHBvcnQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTU6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTk2LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMDM9Y29uZmlnIElQX1NFVF9IQVNIX0lQTUFDXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDppcCxtYWMgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMDU6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNi1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm1hYyBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjExNDpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMjE9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjItXHR0cmlzdGF0ZSBcJiMzNDtoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMzpcdGRlcGVuZHMgb24gSVBfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTI0LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xMzA9Y29uZmlnIElQX1NFVF9IQVNIX05FVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTMyOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzMtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQwLVx0dHJpc3RhdGUgXCYjMzQ7aGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTQxOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDItXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE0OD1jb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LHBvcnQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1MS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTU4PWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRJRkFDRVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cdHRyaXN0YXRlIFwmIzM0O2hhc2g6bmV0LGlmYWNlIHNldCBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTYwOlx0ZGVwZW5kcyBvbiBJUF9TRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjEtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE2OD1jb25maWcgSVBfU0VUX0xJU1RfU0VUXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY5LVx0dHJpc3RhdGUgXCYjMzQ7bGlzdDpzZXQgc2V0IHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNzA6XHRkZXBlbmRzIG9uIElQX1NFVFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3MS1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTc4PWNvbmZpZyBHQ09WX1BST0ZJTEVfSVBTRVRcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNzktXHRib29sIFwmIzM0O0VuYWJsZSBHQ09WIHByb2ZpbGluZyBmb3IgaXBzZXRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxODA6XHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTgxLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ3OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBJUCBTZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYElQIFNldGAgY29uZmlndXJhdGlvbiBjb2RlLiBJdCYjMzk7cyBjbGVhciB0aGF0IGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAgYXJlIGZvdW5kYXRpb25hbC4gVGhlbiwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgc3BlY2lmaWMgYElQIFNldGAgZnVuY3Rpb25hbGl0aWVzLiBMb29raW5nIGF0IHRoZSBjb25maWdzLCBJJiMzOTt2ZSBnb3QgYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGZvbGxvd2VkIGJ5IHRoZSBiaXRtYXAgY29uZmlndXJhdGlvbnM6IGBJUF9TRVRfQklUTUFQX0lQYCwgYElQX1NFVF9CSVRNQVBfSVBNQUNgLCBhbmQgYElQX1NFVF9CSVRNQVBfUE9SVGAuIFRob3NlIHNlZW0gdG8gYmUgdGhlIGtleSBvbmVzIHVzaW5nIGBpcF9zZXRfYml0bWFwX2dlbi5oYC4gQW5kLCBgSVBfU0VUX0xJU1RfU0VUYCBpcyBkZWZpbml0ZWx5IHVzaW5nIGBpcF9zZXRfbGlzdF9zZXQuY2AuIFNvIHRvIGJlIHByZWNpc2UsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlc2UgY29uZmlncyBhcmUgYWxsIGVuYWJsZWQ6IGBJTkVUYCwgYE5FVEZJTFRFUmAsIGBJUF9TRVRgLCBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYElQX1NFVF9CSVRNQVBfUE9SVGAsIGFuZCBgSVBfU0VUX0xJU1RfU0VUYC4KCk5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gYGlwX3NldF9mbHVzaGAuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgYW5kIGEgbmV0bGluayBjYWxsYmFjaywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGBJUFNFVF9DTURfRkxVU0hgLiAgSSB3b25kZXIgaWYgdGhhdCBgZmx1c2hgIGZ1bmN0aW9uIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoIHRoZXJlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgaXBfc2V0X2ZsdXNoX3NldGAgYW5kIHNlZSB3aGF0IHRoYXQgZXhwb3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfc2V0X2ZsdXNoX3NldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMwNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTEzMTI9c3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cdFx0XHRpZiAocylcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzI2Olx0XHRcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM2NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZsdXNoIE9wZXJhdGlvbiBpbiBgaXBfc2V0YCoqCgpPa2F5LCB0aGUgdGFzayBpcyB0byB1bmRlcnN0YW5kIHRoZSBmbHVzaGluZyBtZWNoYW5pc20gd2l0aGluIGBpcF9zZXRgLCBhbmQgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBpcF9zZXRfZmx1c2hgLCB3aGljaCBzZWVtcyB0byBiZSB0aGUgb2J2aW91cyBjYW5kaWRhdGUuIFJpZ2h0LCBpdCYjMzk7cyBhIG5ldGxpbmsgY2FsbGJhY2ssIHNvIGl0IGhhbmRsZXMgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNvbW11bmljYXRpb24sIHdoaWNoIGFsaWducyB3aXRoIGZsdXNoaW5nLiBOb3cgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBieSBkaWdnaW5nIGludG8gYGlwX3NldF9jb3JlLmNgIGFuZCBmaW5kaW5nIHRoZSBmdW5jdGlvbi4KCkFscmlnaHQsIHRoZXJlIGl0IGlzOiBgaXBfc2V0X2ZsdXNoYC4gQnV0IGl0JiMzOTtzIHN0YXRpYy4gSG1tLCB1c3VhbGx5LCBJIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIEl0JiMzOTtzIHVzZWQgYXMgYSBjYWxsYmFjaywgc28gaXQgc2hvdWxkIG5vdCBiZSBpbmxpbmVkLiBJIGp1c3QgY29uZmlybWVkOiBgc3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlgLgoKVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBzdGF0aWMgbWFrZXMgbWUgYSBsaXR0bGUgY2F1dGlvdXMuIEl0IG1pZ2h0IG1lYW4gdGhlIGNvbXBpbGVyIG9wdGltaXplZCBpdCBhZ2dyZXNzaXZlbHksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaXQgbm90IGJlaW5nIGEgZGlzdGluY3Qgc3ltYm9sIEkgY291bGQgcG9pbnQgdG8uIEJ1dCBiZWNhdXNlIGl0JiMzOTtzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JgLCBpdCBzaG91bGRuJiMzOTt0IGJlIGlubGluZWQuIFRoYXQmIzM5O3MgYSBnb29kIHNpZ24uIExldCYjMzk7cyBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbHRlcm5hdGl2ZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZsdXNoLCBhcyB0aGUgaW5zdHJ1Y3Rpb25zIHN1Z2dlc3RlZC4gQ2hlY2tpbmcgYGlwX3NldF9kZXN0cm95YCB3b24mIzM5O3Qgd29yaywgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgY2hhbmdlcyBgZmx1c2hgLiBJIG5lZWQgdG8gcmV2aWV3IGBpcF9zZXRfY29yZS5jYCBmb3IgYW55IHJlbGF0ZWQsIG5vbi1zdGF0aWMgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMwNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMxMjpzdGF0aWMgaW50IGlwX3NldF9mbHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTMtXHRcdFx0Y29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cdFx0XHRpZiAocylcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzI2Olx0XHRcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjUtXHRbSVBTRVRfQ01EX0ZMVVNIXVx0PSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE2NjpcdFx0LmNhbGxcdFx0PSBpcF9zZXRfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ny1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX01VVEVYLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjU2MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDY3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIElQIFNldCBGbHVzaCBPcHRpbWl6YXRpb24qKgoKT2theSwgaGVyZSYjMzk7cyBob3cgSSYjMzk7bSBhcHByb2FjaGluZyB0aGlzLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGNoYW5nZXMgcmVsYXRlZCB0byBmbHVzaGluZyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgSVAgc2V0IGZyYW1ld29yay4gSW5pdGlhbGx5LCBJIG5vdGVkIHRoYXQgYGlwX3NldF9mbHVzaGAgaXMgc3RhdGljIGJ1dCB1c2VkIGFzIGEgY2FsbGJhY2ssIHdoaWNoIGlzIGZpbmUgaW4gcHJpbmNpcGxlLiBNeSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBuZXRsaW5rIG1lc3NhZ2VzIGluIG5ldGZpbHRlciBpcyBgbmZuZXRsaW5rX3Jjdl9tc2dgLCBidXQgZm9yIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLCBgaXBfc2V0X2ZsdXNoYCBpcyB0aGUgbW9yZSByZWxldmFudCBwb2ludC4gSSBjaGVja2VkIGlmIGBpcF9zZXRfZmx1c2hgIGlzIGV4cG9ydGVkIOKAkyBpdCYjMzk7cyBub3QuIEkgY29uc2lkZXJlZCBvdGhlciBmbHVzaCBmdW5jdGlvbnMgbGlrZSBgbGlzdF9zZXRfZmx1c2hgIGFuZCBgbXR5cGVfZmx1c2hgLCBidXQgdGhleSYjMzk7cmUgYWxzbyBzdGF0aWMuIFNpbmNlIGBpcF9zZXRfZmx1c2hgIGlzIGRpcmVjdGx5IHJlbGV2YW50LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGl0LiBBbmQsIHNpbmNlIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgaXBfc2V0X2JpdG1hcF9nZW4uaGAgYW5kIGBpcF9zZXRfbGlzdF9zZXQuY2AsIEkmIzM5O2xsIHByaW9yaXRpemUgaW5jbHVkaW5nIHRoZSBjb25maWdzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBtb2R1bGVzLgoKVGhlIGd1aWRhbmNlIHN1Z2dlc3RzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cy4gQWx0aG91Z2ggYGlwX3NldF9mbHVzaGAgaXMgc3RhdGljLCBiZWNhdXNlIGl0JiMzOTtzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IGNhbiYjMzk7dCBiZSBpbmxpbmVkLCBzbyBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBtYWtlcyBpdCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBBbHNvLCBhbHRob3VnaCBgbXR5cGVfZmx1c2hgIGlzIHVzZWQgaW4gdGhlIGBpcF9zZXRfaGFzaF9nZW4uaGAgYW5kIHRoZSBwYXRjaCB0b3VjaGVzIHRoYXQgaGVhZGVyLCB0aGUgcGF0Y2ggb25seSBtb2RpZmllcyBgaXBfc2V0X2JpdG1hcF9nZW4uaGAgYW5kIGBpcF9zZXRfbGlzdF9zZXQuY2AsIHNvIGBJUF9TRVRfSEFTSF8qYCBjb25maWdzIGFyZSBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciB0aGlzIHNwZWNpZmljIHBhdGNoLgoKSSYjMzk7dmUgZGV0ZXJtaW5lZCB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMuIEl0IHJlbW92ZXMgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpdCByZXBsYWNlcyB0aGVtIHdpdGggYSBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgYXNzZXJ0aW9uIHRvIGNoZWNrIHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBhbHJlYWR5IHplcm8uIFRoaXMgaXMgYW4gaW1wb3J0YW50IGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgcmVtb3ZlcyBzdGF0ZS1yZXNldHRpbmcgYXNzaWdubWVudHMsIG1lYW5pbmcgdGhhdCBpZiB0aGVyZSBpcyBhIGJ1ZyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IGNvcnJlY3RseSBkZWNyZW1lbnRlZCwgaXQgd2lsbCBub3cgdHJpZ2dlciBhIHdhcm5pbmcuIEZ1enppbmcgdGhpcyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBjb3VudHMgYXJlIGNvcnJlY3RseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuCgpUaGVyZWZvcmUsIGZvciBteSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24sIEkmIzM5O2xsIG5lZWQ6CgpDb25maWdzOgoqICAgYElORVRgCiogICBgTkVURklMVEVSYAoqICAgYElQX1NFVGAKKiAgIGBJUF9TRVRfQklUTUFQX0lQYAoqICAgYElQX1NFVF9CSVRNQVBfSVBNQUNgCiogICBgSVBfU0VUX0JJVE1BUF9QT1JUYAoqICAgYElQX1NFVF9MSVNUX1NFVGAKCkZvY3VzIFN5bWJvbDoKKiAgIGBpcF9zZXRfZmx1c2hgCgpJJiMzOTttIGNvbmZpZGVudCB0aGF0IGBpcF9zZXRfZmx1c2hgIGlzIHRoZSBjb3JyZWN0IHN5bWJvbCB0byB0YXJnZXQgZm9yIGZvY3VzZWQgZnV6emluZyBpbiB0aGlzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMwNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTEtXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMxMjpzdGF0aWMgaW50IGlwX3NldF9mbHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTMtXHRcdFx0Y29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cdFx0XHRpZiAocylcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzI2Olx0XHRcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVx0XHR9XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzItXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcdFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjUtXHRbSVBTRVRfQ01EX0ZMVVNIXVx0PSB7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MjE2NjpcdFx0LmNhbGxcdFx0PSBpcF9zZXRfZmx1c2gsXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ny1cdFx0LnR5cGVcdFx0PSBORk5MX0NCX01VVEVYLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODM4OAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVAgU2V0IEZsdXNoaW5nIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBJJiMzOTttIHByZXR0eSBzdXJlIGBpcF9zZXRfZmx1c2hgIGlzIHRoZSBtYWluIHN5bWJvbCB0byBmb2N1cyBvbiBoZXJlLiBCdXQgaG9sZCBvbiBhIHNlY29uZOKApiBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gSXQgc2VlbXMgdGhlIGFjdHVhbCBmdW5jdGlvbnMgZGlyZWN0bHkgbW9kaWZpZWQgYXJlIGBsaXN0X3NldF9mbHVzaGAgYW5kIGBtdHlwZV9mbHVzaGAuIEFoYSEgTm93IEkgcmVtZW1iZXI7IGBtdHlwZV9mbHVzaGAgaXMgYSBtYWNybyBvciB0ZW1wbGF0ZS4gVGhhdCBtZWFucyBpdCBsaWtlbHkgZXhwYW5kcyB0byBkaWZmZXJlbnQgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBkYXRhIHR5cGVzIGludm9sdmVkLiBJbiB0aGlzIGNhc2UsIHRoYXQgZXhwYW5zaW9uIGxvb2tzIGxpa2UgaXQgcmVzdWx0cyBpbiBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGFuZCBgYml0bWFwX3BvcnRfZmx1c2hgLiBOb3csIG15IG5leHQgbW92ZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBnZW5lcmF0ZWQgc3ltYm9scywgdGhlc2UgZGVyaXZlZCBmdW5jdGlvbnMsIGFjdHVhbGx5IGV4aXN0IGluIHRoZSBjb21waWxlZCBjb2RlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiB0aGUgY2hhbmdlLiBMZXQgbWUgcXVpY2tseSBjb25maXJtIHRoZWlyIGV4aXN0ZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiaXRtYXBfaXBfZmx1c2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODY4NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipBbmFseXppbmcgdGhlIGBtdHlwZV9mbHVzaGAgRGVmaW5pdGlvbioqCgpIbW0sIGxldCYjMzk7cyBzZWUuLi4gYG10eXBlX2ZsdXNoYC4gUmlnaHQsIGl0JiMzOTtzIGRlZmluZWQgYXMgYElQU0VUX1RPS0VOKE1UWVBFLCBfZmx1c2gpYC4gT2theSwgc28gaXQmIzM5O3MgYSBtYWNybywgbm90IGEgZGlyZWN0IHZhcmlhYmxlIG9yIGZ1bmN0aW9uLiBOb3csIHdoYXQgZG9lcyBgSVBTRVRfVE9LRU5gIGFjdHVhbGx5ICpkbyo/IEkgbmVlZCB0byBjaGVjayBpdHMgZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIHdoYXQgYG10eXBlX2ZsdXNoYCByZWFsbHkgcmVwcmVzZW50cy4gVGhpcyBpcyBjcnVjaWFsIGZvciB0cmFjaW5nIHRoZSBjb2RlIGFuZCBlbnN1cmluZyBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSB1bmRlcmx5aW5nIGltcGxpY2F0aW9ucyBvciBwb3RlbnRpYWwgcGl0ZmFsbHMgaW4gaG93IHRoaXMgaXMgaW1wbGVtZW50ZWQuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIG1hY3JvIGRlZmluaXRpb24gaXRzZWxmLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjZGVmaW5lIElQU0VUX1RPS0VOJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oPTUyMz1uZl9pbmV0X2FkZHJfbWFza19pbnBsYWNlKHVuaW9uIG5mX2luZXRfYWRkciAqYTEsXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmgtNTQwLSNkZWZpbmUgSVBTRVRfQ09OQ0FUKGEsIGIpXHRcdGEjI2JcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oOjU0MTojZGVmaW5lIElQU0VUX1RPS0VOKGEsIGIpXHRcdElQU0VUX0NPTkNBVChhLCBiKVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0LmgtNTQyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTAzOQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgTWFjcm8tR2VuZXJhdGVkIFN5bWJvbHMqKgoKT2theSwgc28gYElQU0VUX1RPS0VOKGJpdG1hcF9pcCwgX2ZsdXNoKWAgZXhwYW5kcyB0byBgYml0bWFwX2lwX2ZsdXNoYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIHdhcyBwdXp6bGVkIHdoeSBgZ2l0IGdyZXBgIHdhc24mIzM5O3QgZmluZGluZyBgYml0bWFwX2lwX2ZsdXNoYC4gT2YgY291cnNlLCBpdCYjMzk7cyBtYWNyby1nZW5lcmF0ZWQhIFRoZSBzb3VyY2UgY29kZSBkb2VzbiYjMzk7dCBsaXRlcmFsbHkgY29udGFpbiB0aGUgc3RyaW5nICYjMzQ7Yml0bWFwX2lwX2ZsdXNoJiMzNDs7IHRoZSBjb21waWxlciAqY3JlYXRlcyogdGhhdCBzeW1ib2wuCgpSaWdodCwgc28gdG8gdHJhY2UgdGhpcyB0aHJvdWdoLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgZ2VuZXJhdGVkIHN5bWJvbHMuIEkmIzM5O2xsIGFkZCBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGBiaXRtYXBfcG9ydF9mbHVzaGAsIGFuZCBgbGlzdF9zZXRfZmx1c2hgIHRvIG15IGxpc3Qgb2YgZm9jdXMgc3ltYm9scy4gTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgdGhhdCBgbGlzdF9zZXRfZmx1c2hgIGlzIGFsc28gY29ycmVjdGx5IGdlbmVyYXRlZCBhbmQgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpc3Rfc2V0X2ZsdXNoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDE1PXN0YXRpYyB2b2lkXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQxNjpsaXN0X3NldF9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxNy17XG4tLVxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NDM9bGlzdF9zZXRfY2FuY2VsX2djKHN0cnVjdCBpcF9zZXQgKnNldClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU1MC1cdC8qIEZsdXNoIGxpc3QgdG8gZHJvcCByZWZlcmVuY2VzIHRvIG90aGVyIGlwc2V0cyAqL1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NTE6XHRsaXN0X3NldF9mbHVzaChzZXQpO1xubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTItfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBzZXRfdmFyaWFudCA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2Mi1cdC5kZXN0cm95ID0gbGlzdF9zZXRfZGVzdHJveSxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTYzOlx0LmZsdXNoXHQ9IGxpc3Rfc2V0X2ZsdXNoLFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NjQtXHQuaGVhZFx0PSBsaXN0X3NldF9oZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcxOAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFJlYXNvbmluZyBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBsaXN0X3NldF9mbHVzaGAgaXMsIGluIGZhY3QsIHByZXNlbnQgaW4gdGhlIGNvZGViYXNlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSByZWxhdGVkIGZsdXNoIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIG15IHByaW1hcnkgZm9jdXMgZm9yIHRoaXMgbmV4dCBhbmFseXNpcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGVzZSBzeW1ib2xzIHRvIG15IG1lbnRhbCAoYW5kIG5vdyBhY3R1YWwpIGxpc3Q6IGBpcF9zZXRfZmx1c2hgLCBgbGlzdF9zZXRfZmx1c2hgLCBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGFuZCBgYml0bWFwX3BvcnRfZmx1c2hgLiBNeSBsb2dpYyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlc2UgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IHBhcnQgb2YgdGhlIHJlbGF0ZWQgZmx1c2ggbWVjaGFuaXNtcy4KCk5vdywgYXMgYSByZW1pbmRlciB0byBteXNlbGYsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBrZWVwaW5nIHRyYWNrIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhpcyBzZXQgb2Ygb3BlcmF0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIGluIG1pbmQ6IGBJTkVUYCwgYE5FVEZJTFRFUmAsIGBJUF9TRVRgLCBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYElQX1NFVF9CSVRNQVBfUE9SVGAsIGFuZCBgSVBfU0VUX0xJU1RfU0VUYC4KCkhvbGQgb24sIEkgc2VlIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFYCB1c2VkLiBTaW5jZSBJJiMzOTttIGJlaW5nIHRob3JvdWdoLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoYXQgaGFzIGFueSBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCYjMzk7cyBsb29rIHRoYXQgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RFQlVHX05FVF9XQVJOX09OX09OQ0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkwNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM9OTgyPXN0YXRpYyBpbnQgZ3ZlX3J4X2NvbXBsZXRlX3JzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTEwMjYtXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM6MTAyNzpcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX2ZyYWdfc2l6ZShmcmFnKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0xMDI4LVx0XHRza2JfZnJhZ19vZmZfYWRkKGZyYWcsIGhkcl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L21hY3NlYy5jPTEwMTE9c3RhdGljIGVudW0gcnhfaGFuZGxlcl9yZXN1bHQgaGFuZGxlX25vdF9tYWNzZWMoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9tYWNzZWMuYy0xMDQ4LVx0XHRcdFx0ICovXG5kcml2ZXJzL25ldC9tYWNzZWMuYzoxMDQ5Olx0XHRcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghb3BzLVx1MDAzZXJ4X3VzZXNfbWRfZHN0KTtcbmRyaXZlcnMvbmV0L21hY3NlYy5jLTEwNTAtXHRcdFx0XHRyeF9zYyA9IGZpbmRfcnhfc2MoXHUwMDI2bWFjc2VjLVx1MDAzZXNlY3ksXG4tLVxuZHJpdmVycy9uZXQvb3Zwbi9jcnlwdG9fYWVhZC5jPTU1PXN0YXRpYyB1bnNpZ25lZCBpbnQgb3Zwbl9hZWFkX2NyeXB0b190bXBfc2l6ZShzdHJ1Y3QgY3J5cHRvX2FlYWQgKnRmbSxcbi0tXG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmMtNTktXG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmM6NjA6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNyeXB0b19hZWFkX2l2c2l6ZSh0Zm0pICE9IE9WUE5fTk9OQ0VfU0laRSk7XG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmMtNjEtXG4tLVxuZHJpdmVycy9uZXQvb3Zwbi9pby5jPTMxMj1zdGF0aWMgYm9vbCBvdnBuX2VuY3J5cHRfb25lKHN0cnVjdCBvdnBuX3BlZXIgKnBlZXIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTMyNC1cdGlmICh1bmxpa2VseSghb3Zwbl9wZWVyX2hvbGQocGVlcikpKSB7XG5kcml2ZXJzL25ldC9vdnBuL2lvLmM6MzI1Olx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTMyNi1cdFx0b3Zwbl9jcnlwdG9fa2V5X3Nsb3RfcHV0KGtzKTtcbi0tXG5kcml2ZXJzL25ldC9vdnBuL3RjcC5jPTUxMT1pbnQgb3Zwbl90Y3Bfc29ja2V0X2F0dGFjaChzdHJ1Y3Qgb3Zwbl9zb2NrZXQgKm92cG5fc29jayxcbi0tXG5kcml2ZXJzL25ldC9vdnBuL3RjcC5jLTUzNy1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L292cG4vdGNwLmM6NTM4Olx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xuZHJpdmVycy9uZXQvb3Zwbi90Y3AuYy01MzktXHRcdGdvdG8gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzUwPXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjQ0MS1cdFx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNDQyOlx0XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjQ0My1cdFx0XHRnb3RvIGRyb3A7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yNzEzPXN0cnVjdCBuZXRkZXZfcXVldWUgKm5ldGRldl9nZXRfdHhfcXVldWUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI3MTUte1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNzE2Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShpbmRleCBcdTAwM2U9IGRldi1cdTAwM2VudW1fdHhfcXVldWVzKTtcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjcxNy1cdHJldHVybiBcdTAwMjZkZXYtXHUwMDNlX3R4W2luZGV4XTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTExNjg9c3RhdGljIGlubGluZSB2b2lkIHNrYl9kc3RfY2hlY2tfdW5zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTE2OS17XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjExNzA6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKChza2ItXHUwMDNlX3NrYl9yZWZkc3QgXHUwMDI2IFNLQl9EU1RfUFRSTUFTSykgXHUwMDI2XHUwMDI2XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTExNzEtXHRcdFx0ICAgICAgICEoc2tiLVx1MDAzZV9za2JfcmVmZHN0IFx1MDAyNiBTS0JfRFNUX05PUkVGKSk7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0yNjkwPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHN0cnVjdCBza19idWZmICpza2IsIGludCBpLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjY5My17XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjI2OTQ6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNpemUgXHUwMDNlIHRydWVzaXplKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjY5NS1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTI4MjU9c3RhdGljIGlubGluZSB2b2lkICpfX3NrYl9wdXNoKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4MjYte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoyODI3Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXHUwMDNlIElOVF9NQVgpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODI4LVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODI5LVx0c2tiLVx1MDAzZWRhdGEgLT0gbGVuO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoyODMwOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXHUwMDNlZGF0YSBcdTAwM2Mgc2tiLVx1MDAzZWhlYWQpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODMxLVx0c2tiLVx1MDAzZWxlbiAgJiM0Mzs9IGxlbjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTI4MzY9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkICpfX3NrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4Mzcte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoyODM4Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXHUwMDNlIElOVF9NQVgpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODM5LVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9Mjg2Mj1wc2tiX21heV9wdWxsX3JlYXNvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODYzLXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6Mjg2NDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobGVuIFx1MDAzZSBJTlRfTUFYKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjg2NS1cdHNrYl9taWdodF9yZWFsbG9jKHNrYik7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDAwPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfbWFjX2xlbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzAwMi1cdGlmICghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKSB7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjMwMDM6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwMDQtXHRcdHNrYi1cdTAwM2VtYWNfbGVuID0gMDtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMwMjE9c3RhdGljIGlubGluZSB2b2lkIHNrYl9yZXNldF9pbm5lcl90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDI0LVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMDI1Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXHUwMDNlaW5uZXJfdHJhbnNwb3J0X2hlYWRlcikpb2Zmc2V0KTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzAyNi1cdHNrYi1cdTAwM2Vpbm5lcl90cmFuc3BvcnRfaGVhZGVyID0gb2Zmc2V0O1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MzA0MT1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3Jlc2V0X2lubmVyX25ldHdvcmtfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDQ0LVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMDQ1Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXHUwMDNlaW5uZXJfbmV0d29ya19oZWFkZXIpKW9mZnNldCk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwNDYtXHRza2ItXHUwMDNlaW5uZXJfbmV0d29ya19oZWFkZXIgPSBvZmZzZXQ7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDY2PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfaW5uZXJfbWFjX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA2OS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA3MDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uob2Zmc2V0ICE9ICh0eXBlb2Yoc2tiLVx1MDAzZWlubmVyX21hY19oZWFkZXIpKW9mZnNldCk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwNzEtXHRza2ItXHUwMDNlaW5uZXJfbWFjX2hlYWRlciA9IG9mZnNldDtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMwODU9c3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfdHJhbnNwb3J0X2hlYWRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDg2LXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA4NzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNrYl90cmFuc3BvcnRfaGVhZGVyX3dhc19zZXQoc2tiKSk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwODgtXHRyZXR1cm4gc2tiLVx1MDAzZWhlYWQgJiM0Mzsgc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXI7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDkxPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA5NC1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA5NTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uob2Zmc2V0ICE9ICh0eXBlb2Yoc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKW9mZnNldCk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwOTYtXHRza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciA9IG9mZnNldDtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMxMzQ9c3RhdGljIGlubGluZSB2b2lkIHNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzEzNy1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzEzODpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uob2Zmc2V0ICE9ICh0eXBlb2Yoc2tiLVx1MDAzZW5ldHdvcmtfaGVhZGVyKSlvZmZzZXQpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMTM5LVx0c2tiLVx1MDAzZW5ldHdvcmtfaGVhZGVyID0gb2Zmc2V0O1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MzE0OD1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl9tYWNfaGVhZGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMxNDkte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMTUwOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE1MS1cdHJldHVybiBza2ItXHUwMDNlaGVhZCAmIzQzOyBza2ItXHUwMDNlbWFjX2hlYWRlcjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMxNTk9c3RhdGljIGlubGluZSB1MzIgc2tiX21hY19oZWFkZXJfbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMxNjAte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMTYxOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX21hY19oZWFkZXJfd2FzX3NldChza2IpKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE2Mi1cdHJldHVybiBza2ItXHUwMDNlbmV0d29ya19oZWFkZXIgLSBza2ItXHUwMDNlbWFjX2hlYWRlcjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTMxNzA9c3RhdGljIGlubGluZSB2b2lkIHNrYl9yZXNldF9tYWNfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMTczLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMTc0Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXHUwMDNlbWFjX2hlYWRlcikpb2Zmc2V0KTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE3NS1cdHNrYi1cdTAwM2VtYWNfaGVhZGVyID0gb2Zmc2V0O1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MzI0MT1zdGF0aWMgaW5saW5lIHUzMiBza2JfbmV0d29ya19oZWFkZXJfbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMyNDIte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMjQzOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChza2IpKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzI0NC1cdHJldHVybiBza2ItXHUwMDNldHJhbnNwb3J0X2hlYWRlciAtIHNrYi1cdTAwM2VuZXR3b3JrX2hlYWRlcjtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTQ2NTg9c3RhdGljIGlubGluZSB2b2lkIHNrYl9wb3N0cHVsbF9kYXRhX21vdmUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2NjEte1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo0NjYyOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXHUwMDNlIElOVF9NQVgpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00NjYzLVx0c2tiX2RhdGFfbW92ZShza2IsIGxlbiwgbik7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00Njc0PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcG9zdHB1c2hfZGF0YV9tb3ZlKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00Njc3LXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDY3ODpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobGVuIFx1MDAzZSBJTlRfTUFYKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY3OS1cdHNrYl9kYXRhX21vdmUoc2tiLCAtbGVuLCBuKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTUzNDM9c3RhdGljIGlubGluZSB2b2lkIHNrYl9jaGVja3N1bV9ub25lX2Fzc2VydChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01MzQ0LXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NTM0NTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVx1MDAzZWlwX3N1bW1lZCAhPSBDSEVDS1NVTV9OT05FKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNTM0Ni19XG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fdnNvY2suaD01MD1zdGF0aWMgaW5saW5lIHZvaWQgdmlydGlvX3Zzb2NrX3NrYl9wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxlbilcbmluY2x1ZGUvbGludXgvdmlydGlvX3Zzb2NrLmgtNTEte1xuaW5jbHVkZS9saW51eC92aXJ0aW9fdnNvY2suaDo1MjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVx1MDAzZWxlbik7XG5pbmNsdWRlL2xpbnV4L3ZpcnRpb192c29jay5oLTUzLVxuLS1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaD0zNDA9c3RhdGljIGlubGluZSB2b2lkIGZpYjZfaW5mb19yZWxlYXNlKHN0cnVjdCBmaWI2X2luZm8gKmY2aSlcbi0tXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMzQyLVx0aWYgKGY2aSBcdTAwMjZcdTAwMjYgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmY2aS1cdTAwM2VmaWI2X3JlZikpIHtcbmluY2x1ZGUvbmV0L2lwNl9maWIuaDozNDM6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNmY2aS1cdTAwM2VnY19saW5rKSk7XG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMzQ0LVx0XHRjYWxsX3JjdV9odXJyeShcdTAwMjZmNmktXHUwMDNlcmN1LCBmaWI2X2luZm9fZGVzdHJveV9yY3UpO1xuLS1cbmluY2x1ZGUvbmV0L25ldF9kZWJ1Zy5oPTExND1kbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmgtMTUxLSNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19ORVQpXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaDoxNTI6I2RlZmluZSBERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNvbmQpICgodm9pZClXQVJOX09OX09OQ0UoY29uZCkpXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaC0xNTMtI2RlZmluZSBERUJVR19ORVRfV0FSTl9PTkNFKGNvbmQsIGZvcm1hdC4uLikgKCh2b2lkKVdBUk5fT05DRShjb25kLCBmb3JtYXQpKVxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmgtMTU0LSNlbHNlXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaDoxNTU6I2RlZmluZSBERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNvbmQpIEJVSUxEX0JVR19PTl9JTlZBTElEKGNvbmQpXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaC0xNTYtI2RlZmluZSBERUJVR19ORVRfV0FSTl9PTkNFKGNvbmQsIGZvcm1hdC4uLikgQlVJTERfQlVHX09OX0lOVkFMSUQoY29uZClcbi0tXG5pbmNsdWRlL25ldC9uZXRsaW5rLmg9MjI2MT1zdGF0aWMgaW5saW5lIGludCBubGFfbmVzdF9lbmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sYXR0ciAqc3RhcnQpXG4tLVxuaW5jbHVkZS9uZXQvbmV0bGluay5oLTIyNjQtXG5pbmNsdWRlL25ldC9uZXRsaW5rLmg6MjI2NTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoZGlmZiBcdTAwM2UgVTE2X01BWCk7XG5pbmNsdWRlL25ldC9uZXRsaW5rLmgtMjI2Ni1cdHN0YXJ0LVx1MDAzZW5sYV9sZW4gPSBkaWZmO1xuLS1cbmluY2x1ZGUvbmV0L25ldG1lbS5oPTE3MT1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfaW92ICpuZXRtZW1fdG9fbmV0X2lvdihuZXRtZW1fcmVmIG5ldG1lbSlcbi0tXG5pbmNsdWRlL25ldC9uZXRtZW0uaC0xNzYtXG5pbmNsdWRlL25ldC9uZXRtZW0uaDoxNzc6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHRydWUpO1xuaW5jbHVkZS9uZXQvbmV0bWVtLmgtMTc4LVx0cmV0dXJuIE5VTEw7XG4tLVxuaW5jbHVkZS9uZXQvbmV0bWVtLmg9MjEyPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBuZXRtZW1fcGZuX3RyYWNlKG5ldG1lbV9yZWYgbmV0bWVtKVxuLS1cbmluY2x1ZGUvbmV0L25ldG1lbS5oLTIzMi0oe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG5pbmNsdWRlL25ldC9uZXRtZW0uaDoyMzM6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFwYWdlX3Bvb2xfcGFnZV9pc19wcChwKSk7XHRcdFxcXG5pbmNsdWRlL25ldC9uZXRtZW0uaC0yMzQtXHRfX3BwX3BhZ2VfdG9fbm1kZXNjKHApO1x0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9uZXQvcmVxdWVzdF9zb2NrLmg9MTI4PXN0YXRpYyBpbmxpbmUgdm9pZCByZXFza19mcmVlKHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbmluY2x1ZGUvbmV0L3JlcXVlc3Rfc29jay5oLTEyOS17XG5pbmNsdWRlL25ldC9yZXF1ZXN0X3NvY2suaDoxMzA6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHJlZmNvdW50X3JlYWQoXHUwMDI2cmVxLVx1MDAzZXJza19yZWZjbnQpICE9IDApO1xuaW5jbHVkZS9uZXQvcmVxdWVzdF9zb2NrLmgtMTMxLVx0X19yZXFza19mcmVlKHJlcSk7XG4tLVxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaD05MDg9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcWRpc2NfcGt0X3NlZ3MoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oLTkxMS1cbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg6OTEyOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShwa3Rfc2VncyAhPVxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC05MTMtXHRcdFx0KHNrYl9pc19nc28oc2tiKSA/IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vnc29fc2VncyA6IDEpKTtcbi0tXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oPTEyMjY9c3RhdGljIGlubGluZSB2b2lkIHFkaXNjX2RlcXVldWVfZHJvcChzdHJ1Y3QgUWRpc2MgKnEsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC0xMjMwLVxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaDoxMjMxOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghKHEtXHUwMDNlZmxhZ3MgXHUwMDI2IFRDUV9GX0RFUVVFVUVfRFJPUFMpKTtcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg6MTIzMjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UocS1cdTAwM2VmbGFncyBcdTAwMjYgVENRX0ZfTk9MT0NLKTtcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmgtMTIzMy1cbi0tXG5pbmNsdWRlL25ldC9zb2NrLmg9MTgyMT1zdGF0aWMgaW5saW5lIHZvaWQgc29ja19yZWxlYXNlX293bmVyc2hpcChzdHJ1Y3Qgc29jayAqc2spXG5pbmNsdWRlL25ldC9zb2NrLmgtMTgyMi17XG5pbmNsdWRlL25ldC9zb2NrLmg6MTgyMzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNvY2tfb3duZWRfYnlfdXNlcl9ub2NoZWNrKHNrKSk7XG5pbmNsdWRlL25ldC9zb2NrLmgtMTgyNC1cdHNrLVx1MDAzZXNrX2xvY2sub3duZWQgPSAwO1xuLS1cbmluY2x1ZGUvbmV0L3NvY2suaD0yNzk2PXN0YXRpYyBpbmxpbmUgaW50IHNrX2Ryb3BzX3JlYWQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxuLS1cbmluY2x1ZGUvbmV0L3NvY2suaC0yODAwLVx0aWYgKG5kYykge1xuaW5jbHVkZS9uZXQvc29jay5oOjI4MDE6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoYXRvbWljX3JlYWQoXHUwMDI2c2stXHUwMDNlc2tfZHJvcHMpKTtcbmluY2x1ZGUvbmV0L3NvY2suaC0yODAyLVx0XHRyZXR1cm4gbnVtYV9kcm9wX3JlYWQobmRjKTtcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD04MDM9c3RhdGljIGlubGluZSB2b2lkIHRjcF9hZGRfcmVjZWl2ZV9xdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL25ldC90Y3AuaC04MDQte1xuaW5jbHVkZS9uZXQvdGNwLmg6ODA1Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2JfZHN0KHNrYikpO1xuaW5jbHVkZS9uZXQvdGNwLmg6ODA2Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShzZWNwYXRoX2V4aXN0cyhza2IpKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTgwNy1cdF9fc2tiX3F1ZXVlX3RhaWwoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSwgc2tiKTtcbi0tXG5uZXQvY29yZS9kZXYuYz0zNTEwPXN0YXRpYyB1MTYgc2tiX3R4X2hhc2goY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9kZXYuYy0zNTMxLVx0aWYgKHNrYl9yeF9xdWV1ZV9yZWNvcmRlZChza2IpKSB7XG5uZXQvY29yZS9kZXYuYzozNTMyOlx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHFjb3VudCA9PSAwKTtcbm5ldC9jb3JlL2Rldi5jLTM1MzMtXHRcdGhhc2ggPSBza2JfZ2V0X3J4X3F1ZXVlKHNrYik7XG4tLVxubmV0L2NvcmUvZGV2LmM9NDE4NT1zdGF0aWMgaW5saW5lIGludCBfX2Rldl94bWl0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L2NvcmUvZGV2LmMtNDI3Ni1cbm5ldC9jb3JlL2Rldi5jOjQyNzc6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiICE9IGxsaXN0X2VudHJ5KGxsX2xpc3QsXG5uZXQvY29yZS9kZXYuYy00Mjc4LVx0XHRcdFx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZixcbi0tXG5uZXQvY29yZS9kZXYuYz00MzQxPWludCBkZXZfbG9vcGJhY2tfeG1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvY29yZS9kZXYuYy00MzQ3LVx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7XG5uZXQvY29yZS9kZXYuYzo0MzQ4Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX2RzdChza2IpKTtcbm5ldC9jb3JlL2Rldi5jLTQzNDktXHRza2JfZHN0X2ZvcmNlKHNrYik7XG4tLVxubmV0L2NvcmUvZGV2LmM9NDk2NT1zdGF0aWMgaW5saW5lIHZvaWQgX19fX25hcGlfc2NoZWR1bGUoc3RydWN0IHNvZnRuZXRfZGF0YSAqc2QsXG4tLVxubmV0L2NvcmUvZGV2LmMtNDk5MC11c2VfbG9jYWxfbmFwaTpcbm5ldC9jb3JlL2Rldi5jOjQ5OTE6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KFx1MDAyNm5hcGktXHUwMDNlcG9sbF9saXN0KSk7XG5uZXQvY29yZS9kZXYuYy00OTkyLVx0bGlzdF9hZGRfdGFpbChcdTAwMjZuYXBpLVx1MDAzZXBvbGxfbGlzdCwgXHUwMDI2c2QtXHUwMDNlcG9sbF9saXN0KTtcbi0tXG5uZXQvY29yZS9kZXYuYz0xMDgwMz1zdGF0aWMgaW50IGRldl9pbmRleF9yZXNlcnZlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlmaW5kZXgpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTA4MDctXHRpZiAoaWZpbmRleCBcdTAwM2UgSU5UX01BWCkge1xubmV0L2NvcmUvZGV2LmM6MTA4MDg6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5uZXQvY29yZS9kZXYuYy0xMDgwOS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2NvcmUvZHN0X2NhY2hlLmM9Mjg9c3RhdGljIHZvaWQgZHN0X2NhY2hlX3Blcl9jcHVfZHN0X3NldChzdHJ1Y3QgZHN0X2NhY2hlX3BjcHUgKmRzdF9jYWNoZSxcbi0tXG5uZXQvY29yZS9kc3RfY2FjaGUuYy0zMC17XG5uZXQvY29yZS9kc3RfY2FjaGUuYzozMTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWluX3NvZnRpcnEoKSk7XG5uZXQvY29yZS9kc3RfY2FjaGUuYy0zMi1cdGRzdF9yZWxlYXNlKGRzdF9jYWNoZS1cdTAwM2Vkc3QpO1xuLS1cbm5ldC9jb3JlL2RzdF9jYWNoZS5jPTQwPXN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGVfcGVyX2NwdV9nZXQoc3RydWN0IGRzdF9jYWNoZSAqZHN0X2NhY2hlLFxuLS1cbm5ldC9jb3JlL2RzdF9jYWNoZS5jLTQ0LVxubmV0L2NvcmUvZHN0X2NhY2hlLmM6NDU6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFpbl9zb2Z0aXJxKCkpO1xubmV0L2NvcmUvZHN0X2NhY2hlLmMtNDYtXHRkc3QgPSBpZHN0LVx1MDAzZWRzdDtcbi0tXG5uZXQvY29yZS9mbG93X2Rpc3NlY3Rvci5jPTEwNTc9Ym9vbCBfX3NrYl9mbG93X2Rpc3NlY3QoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmMtMTEzMC1cbm5ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmM6MTEzMTpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIW5ldCk7XG5uZXQvY29yZS9mbG93X2Rpc3NlY3Rvci5jLTExMzItXHRpZiAobmV0KSB7XG4tLVxubmV0L2NvcmUvZ3JvLmM9NDI4PXN0YXRpYyB2b2lkIGdyb19wdWxsX2Zyb21fZnJhZzAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGdyb3cpXG4tLVxubmV0L2NvcmUvZ3JvLmMtNDMxLVxubmV0L2NvcmUvZ3JvLmM6NDMyOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXHUwMDNlZW5kIC0gc2tiLVx1MDAzZXRhaWwgXHUwMDNjIGdyb3cpO1xubmV0L2NvcmUvZ3JvLmMtNDMzLVxuLS1cbm5ldC9jb3JlL2x3dHVubmVsLmM9NDMxPWludCBsd3R1bm5lbF9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL2x3dHVubmVsLmMtNDM3LVxubmV0L2NvcmUvbHd0dW5uZWwuYzo0Mzg6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFpbl9zb2Z0aXJxKCkpO1xubmV0L2NvcmUvbHd0dW5uZWwuYy00MzktXG4tLVxubmV0L2NvcmUvbmVpZ2hib3VyLmM9NjM9c3RhdGljIHN0cnVjdCBobGlzdF9oZWFkICpuZWlnaF9nZXRfZGV2X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBmYW1pbHkpXG4tLVxubmV0L2NvcmUvbmVpZ2hib3VyLmMtNjgtXHRkZWZhdWx0OlxubmV0L2NvcmUvbmVpZ2hib3VyLmM6Njk6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5uZXQvY29yZS9uZWlnaGJvdXIuYy03MC1cdFx0ZmFsbHRocm91Z2g7IC8qIHRvIGF2b2lkIHBhbmljIGJ5IG51bGwtcHRyLWRlcmVmICovXG4tLVxubmV0L2NvcmUvbmVpZ2hib3VyLmM9NDYxPXN0YXRpYyBpbnQgX19uZWlnaF9pZmRvd24oc3RydWN0IG5laWdoX3RhYmxlICp0YmwsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmVpZ2hib3VyLmMtNDY3LVx0fSBlbHNlIHtcbm5ldC9jb3JlL25laWdoYm91ci5jOjQ2ODpcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2lwX3Blcm0pO1xubmV0L2NvcmUvbmVpZ2hib3VyLmMtNDY5LVx0XHRuZWlnaF9mbHVzaF90YWJsZSh0YmwpO1xuLS1cbm5ldC9jb3JlL25ldHBvbGwuYz01NDc9aW50IG5ldHBvbGxfc2V0dXAoc3RydWN0IG5ldHBvbGwgKm5wKVxuLS1cbm5ldC9jb3JlL25ldHBvbGwuYy02MTktcHV0OlxubmV0L2NvcmUvbmV0cG9sbC5jOjYyMDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobnAtXHUwMDNlZGV2KTtcbm5ldC9jb3JlL25ldHBvbGwuYy02MjEtXHRpZiAoaXBfb3ZlcndyaXR0ZW4pXG4tLVxubmV0L2NvcmUvcnRuZXRsaW5rLmM9MzE3PXN0YXRpYyB2b2lkIHJ0bmxfbmV0c19hZGQoc3RydWN0IHJ0bmxfbmV0cyAqcnRubF9uZXRzLCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzIwLVxubmV0L2NvcmUvcnRuZXRsaW5rLmM6MzIxOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShydG5sX25ldHMtXHUwMDNlbGVuID09IEFSUkFZX1NJWkUocnRubF9uZXRzLVx1MDAzZW5ldCkpO1xubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzIyLVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTY3ND1zdHJ1Y3Qgc2tfYnVmZiAqX19hbGxvY19za2IodW5zaWduZWQgaW50IHNpemUsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTczMy1cdFx0QlVJTERfQlVHX09OKFNLQl9GQ0xPTkVfVU5BVkFJTEFCTEUgIT0gMCk7XG5uZXQvY29yZS9za2J1ZmYuYzo3MzQ6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVx1MDAzZWZjbG9uZSAhPSBTS0JfRkNMT05FX1VOQVZBSUxBQkxFKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTczNS1cdFx0c2tiLVx1MDAzZWZjbG9uZSB8PSBTS0JfRkNMT05FX09SSUc7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9ODM4PXN0cnVjdCBza19idWZmICpuYXBpX2FsbG9jX3NrYihzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIHVuc2lnbmVkIGludCBsZW4pXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtODQ1LVxubmV0L2NvcmUvc2tidWZmLmM6ODQ2Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaW5fc29mdGlycSgpKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTg0Ny1cdGxlbiAmIzQzOz0gTkVUX1NLQl9QQUQgJiM0MzsgTkVUX0lQX0FMSUdOO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTg5Nz12b2lkIHNrYl9jb2FsZXNjZV9yeF9mcmFnKHN0cnVjdCBza19idWZmICpza2IsIGludCBpLCBpbnQgc2l6ZSxcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy05MDEtXG5uZXQvY29yZS9za2J1ZmYuYzo5MDI6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNpemUgXHUwMDNlIHRydWVzaXplKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTkwMy1cbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xMTY5PXZvaWQgc2tiX3JlbGVhc2VfaGVhZF9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTExNzItXHRpZiAoc2tiLVx1MDAzZWRlc3RydWN0b3IpIHtcbm5ldC9jb3JlL3NrYnVmZi5jOjExNzM6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoaW5faGFyZGlycSgpKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTExNzQtI2lmZGVmIENPTkZJR19JTkVUXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTIxNz1ib29sIF9fc2tfc2tiX3JlYXNvbl9kcm9wKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xMjIyLVxubmV0L2NvcmUvc2tidWZmLmM6MTIyMzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UocmVhc29uID09IFNLQl9OT1RfRFJPUFBFRF9ZRVQgfHxcbm5ldC9jb3JlL3NrYnVmZi5jLTEyMjQtXHRcdFx0ICAgICAgIHUzMl9nZXRfYml0cyhyZWFzb24sXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTUxOT12b2lkIG5hcGlfY29uc3VtZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGJ1ZGdldClcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xNTI1LVxubmV0L2NvcmUvc2tidWZmLmM6MTUyNjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWluX3NvZnRpcnEoKSk7XG5uZXQvY29yZS9za2J1ZmYuYy0xNTI3LVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTQyNzQ9aW50IHNrYl9zaGlmdChzdHJ1Y3Qgc2tfYnVmZiAqdGd0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgc2hpZnRsZW4pXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNDI4NS1cbm5ldC9jb3JlL3NrYnVmZi5jOjQyODY6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHRndC1cdTAwM2VwcF9yZWN5Y2xlICE9IHNrYi1cdTAwM2VwcF9yZWN5Y2xlKTtcbm5ldC9jb3JlL3NrYnVmZi5jOjQyODc6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9jbXBfZGVjcnlwdGVkKHRndCwgc2tiKSk7XG5uZXQvY29yZS9za2J1ZmYuYy00Mjg4LVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTQ2NzQ9c3RydWN0IHNrX2J1ZmYgKnNrYl9zZWdtZW50X2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy00Njg1LVx0LyogT25seSBza2JfZ3JvX3JlY2VpdmVfbGlzdCBnZW5lcmF0ZWQgc2ticyBhcnJpdmUgaGVyZSAqL1xubmV0L2NvcmUvc2tidWZmLmM6NDY4NjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIShza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGUgXHUwMDI2IFNLQl9HU09fRlJBR0xJU1QpKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTQ2ODctXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNDcwMC1cbm5ldC9jb3JlL3NrYnVmZi5jOjQ3MDE6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobnNrYi1cdTAwM2Vzayk7XG5uZXQvY29yZS9za2J1ZmYuYy00NzAyLVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTczMjU9bm9kZWZlcjpcdGtmcmVlX3NrYl9uYXBpX2NhY2hlKHNrYik7XG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNzMyOC1cbm5ldC9jb3JlL3NrYnVmZi5jOjczMjk6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9kc3Qoc2tiKSk7XG5uZXQvY29yZS9za2J1ZmYuYzo3MzMwOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXHUwMDNlZGVzdHJ1Y3Rvcik7XG5uZXQvY29yZS9za2J1ZmYuYzo3MzMxOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2JfbmZjdChza2IpKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTczMzItXG4tLVxubmV0L2NvcmUvc29jay5jPTI0ODA9c3RydWN0IHNvY2sgKnNrX2Nsb25lKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3QgZ2ZwX3QgcHJpb3JpdHksXG4tLVxubmV0L2NvcmUvc29jay5jLTI1MzQtXHRuZXdzay1cdTAwM2Vza19yZXNlcnZlZF9tZW0gID0gMDtcbm5ldC9jb3JlL3NvY2suYzoyNTM1Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuZXdzay1cdTAwM2Vza19kcm9wX2NvdW50ZXJzKTtcbm5ldC9jb3JlL3NvY2suYy0yNTM2LVx0c2tfZHJvcHNfcmVzZXQobmV3c2spO1xuLS1cbm5ldC9jb3JlL3NvY2suYz0zMjQ0PXZvaWQgX19yZWxlYXNlX3NvY2soc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9jb3JlL3NvY2suYy0zMjU4LVx0XHRcdHByZWZldGNoKG5leHQpO1xubmV0L2NvcmUvc29jay5jOjMyNTk6XHRcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2JfZHN0X2lzX25vcmVmKHNrYikpO1xubmV0L2NvcmUvc29jay5jLTMyNjAtXHRcdFx0c2tiX21hcmtfbm90X29uX2xpc3Qoc2tiKTtcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg9MTI5PXN0YXRpYyBpbmxpbmUgdm9pZCBldGhubF91cGRhdGVfdThfdTMyKHU4ICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5oLTEzNi1cdHZhbCA9IG5sYV9nZXRfdTMyKGF0dHIpO1xubmV0L2V0aHRvb2wvbmV0bGluay5oOjEzNzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UodmFsIFx1MDAzZSBVOF9NQVgpO1xubmV0L2V0aHRvb2wvbmV0bGluay5oLTEzOC1cdGlmICgqZHN0ID09IHZhbClcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9NDc1PWludCBpcF9maWJfY2hlY2tfZGVmYXVsdChfX2JlMzIgZ3csIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTQ4Mi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShuaCwgaGVhZCwgbmhfaGFzaCkge1xubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjQ4MzpcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuaC1cdTAwM2VmaWJfbmhfZGV2ICE9IGRldik7XG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtNDg0LVx0XHRpZiAobmgtXHUwMDNlZmliX25oX2d3NCA9PSBndyBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MTkzNj12b2lkIGZpYl9zeW5jX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgb3JpZ19tdHUpXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5NDEtXHRobGlzdF9mb3JfZWFjaF9lbnRyeShuaCwgaGVhZCwgbmhfaGFzaCkge1xubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5NDI6XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobmgtXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5NDMtXHRcdGZpYl9uaGNfdXBkYXRlX210dShcdTAwMjZuaC1cdTAwM2VuaF9jb21tb24sIGRldi1cdTAwM2VtdHUsIG9yaWdfbXR1KTtcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MTk1NT1pbnQgZmliX3N5bmNfZG93bl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCwgYm9vbCBmb3JjZSlcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTk3MC1cdFx0QlVHX09OKCFmaS1cdTAwM2VmaWJfbmhzKTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYzoxOTcxOlx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5oLVx1MDAzZWZpYl9uaF9kZXYgIT0gZGV2KTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTcyLVx0XHRpZiAoZmkgPT0gcHJldl9maSlcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MjEwND1pbnQgZmliX3N5bmNfdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgY2hhciBuaF9mbGFncylcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMjEyOS1cdFx0QlVHX09OKCFmaS1cdTAwM2VmaWJfbmhzKTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYzoyMTMwOlx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5oLVx1MDAzZWZpYl9uaF9kZXYgIT0gZGV2KTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0yMTMxLVx0XHRpZiAoZmkgPT0gcHJldl9maSlcbi0tXG5uZXQvaXB2NC9pbmV0X2RpYWcuYz0yMDk9aW50IGluZXRfc2tfZGlhZ19maWxsKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrICppY3NrLFxuLS1cbm5ldC9pcHY0L2luZXRfZGlhZy5jLTIyOS1cdGhhbmRsZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGluZXRfZGlhZ190YWJsZVtwcm90b2NvbF0sIDEpO1xubmV0L2lwdjQvaW5ldF9kaWFnLmM6MjMwOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaGFuZGxlcik7XG5uZXQvaXB2NC9pbmV0X2RpYWcuYy0yMzEtXHRpZiAoIWhhbmRsZXIpXG4tLVxubmV0L2lwdjQvdGNwX2RpYWcuYz0xOTI9c3RhdGljIGludCB0Y3BfdHdza19kaWFnX2ZpbGwoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9kaWFnLmMtMjA4LVx0ciA9IG5sbXNnX2RhdGEobmxoKTtcbm5ldC9pcHY0L3RjcF9kaWFnLmM6MjA5Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRSh0dy1cdTAwM2V0d19zdGF0ZSAhPSBUQ1BfVElNRV9XQUlUKTtcbm5ldC9pcHY0L3RjcF9kaWFnLmMtMjEwLVxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTMwODM9c3RhdGljIHZvaWQgdGNwX210dXBfcHJvYmVfc3VjY2VzcyhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtMzA5Mi1cdGRvX2Rpdih2YWwsIGljc2stXHUwMDNlaWNza19tdHVwLnByb2JlX3NpemUpO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6MzA5MzpcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoKHUzMil2YWwgIT0gdmFsKTtcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTMwOTQtXHR0Y3Bfc25kX2N3bmRfc2V0KHRwLCBtYXhfdCh1MzIsIDFVLCB2YWwpKTtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MTg0ND1pbnQgdGNwX2ZyYWdtZW50KHN0cnVjdCBzb2NrICpzaywgZW51bSB0Y3BfcXVldWUgdGNwX3F1ZXVlLFxuLS1cbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0xODU3LVxubmV0L2lwdjQvdGNwX291dHB1dC5jOjE4NTg6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9oZWFkbGVuKHNrYikpO1xubmV0L2lwdjQvdGNwX291dHB1dC5jLTE4NTktXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jPTE5Mzk9c3RhdGljIGludCBfX3Bza2JfdHJpbV9oZWFkKHN0cnVjdCBza19idWZmICpza2IsIGludCBsZW4pXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jLTE5NDMtXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM6MTk0NDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2hlYWRsZW4oc2tiKSk7XG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMTk0NS1cdGVhdCA9IGxlbjtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MjQwMD1zdGF0aWMgaW50IHRzb19mcmFnbWVudChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4sXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jLTI0MDctXHQvKiBBbGwgb2YgYSBUU08gZnJhbWUgbXVzdCBiZSBjb21wb3NlZCBvZiBwYWdlZCBkYXRhLiAgKi9cbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoyNDA4Olx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXHUwMDNlbGVuICE9IHNrYi1cdTAwM2VkYXRhX2xlbik7XG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjQwOS1cbi0tXG5uZXQvaXB2NC91ZHAuYz0yNzYwPWVudW0gc2tiX2Ryb3BfcmVhc29uIHVkcF92NF9lYXJseV9kZW11eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3VkcC5jLTI4MDEtXHRza2ItXHUwMDNlc2sgPSBzaztcbm5ldC9pcHY0L3VkcC5jOjI4MDI6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrX2lzX3JlZmNvdW50ZWQoc2spKTtcbm5ldC9pcHY0L3VkcC5jLTI4MDMtXHRza2ItXHUwMDNlZGVzdHJ1Y3RvciA9IHNvY2tfcGZyZWU7XG4tLVxubmV0L2lwdjYvdWRwLmM9MTIxMj12b2lkIHVkcF92Nl9lYXJseV9kZW11eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3VkcC5jLTEyMzgtXHRza2ItXHUwMDNlc2sgPSBzaztcbm5ldC9pcHY2L3VkcC5jOjEyMzk6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrX2lzX3JlZmNvdW50ZWQoc2spKTtcbm5ldC9pcHY2L3VkcC5jLTEyNDAtXHRza2ItXHUwMDNlZGVzdHJ1Y3RvciA9IHNvY2tfcGZyZWU7XG4tLVxubmV0L21wdGNwL2Zhc3RvcGVuLmM9OT12b2lkIG1wdGNwX2Zhc3RvcGVuX3N1YmZsb3dfc3luYWNrX3NldF9wYXJhbXMoc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcbi0tXG5uZXQvbXB0Y3AvZmFzdG9wZW4uYy01My1cdG1wdGNwX2RhdGFfbG9jayhzayk7XG5uZXQvbXB0Y3AvZmFzdG9wZW4uYzo1NDpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc29ja19vd25lZF9ieV91c2VyX25vY2hlY2soc2spKTtcbm5ldC9tcHRjcC9mYXN0b3Blbi5jLTU1LVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTcxMj1zdGF0aWMgYm9vbCBfX21wdGNwX21vdmVfc2tic19mcm9tX3N1YmZsb3coc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy03NjQtXHRcdFx0aWYgKHVubGlrZWx5KG1hcF9yZW1haW5pbmcgXHUwMDNjIGxlbikpIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjc2NTpcdFx0XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy03NjYtXHRcdFx0XHRtcHRjcF9kc3NfY29ycnVwdGlvbihtc2ssIHNzayk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNzY5LVx0XHRcdGlmICh1bmxpa2VseSghZmluKSkge1xubmV0L21wdGNwL3Byb3RvY29sLmM6NzcwOlx0XHRcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSgxKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTc3MS1cdFx0XHRcdG1wdGNwX2Rzc19jb3JydXB0aW9uKG1zaywgc3NrKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0yMjM1PXN0YXRpYyBib29sIG1wdGNwX2Nhbl9zcG9vbF9iYWNrbG9nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGxpc3RfaGVhZCAqc2ticylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yMjQxLVx0ICovXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyMjQyOlx0REVCVUdfTkVUX1dBUk5fT05fT05DRShtc2stXHUwMDNlYmFja2xvZ191bmFjY291bnRlZCBcdTAwMjZcdTAwMjYgc2stXHUwMDNlc2tfc29ja2V0IFx1MDAyNlx1MDAyNlxubmV0L21wdGNwL3Byb3RvY29sLmMtMjI0My1cdFx0XHQgICAgICAgbWVtX2Nncm91cF9mcm9tX3NrKHNrKSk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmg9Njk1PXN0YXRpYyBpbmxpbmUgdm9pZCBtcHRjcF9ib3Jyb3dfZndkbWVtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC03MDEtXHQgKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5oOjcwMjpcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVx1MDAzZWRlc3RydWN0b3IpO1xubmV0L21wdGNwL3Byb3RvY29sLmgtNzAzLVx0c2tfZm9yd2FyZF9hbGxvY19hZGQoc2ssIHNrYi1cdTAwM2V0cnVlc2l6ZSk7XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz05OTQ9c3RhdGljIGJvb2wgc2tiX2lzX2Z1bGx5X21hcHBlZChzdHJ1Y3Qgc29jayAqc3NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmMtMTAwMC1cdGlmICh1bmxpa2VseShza2JfY29uc3VtZWQgXHUwMDNlPSBza2ItXHUwMDNlbGVuKSkge1xubmV0L21wdGNwL3N1YmZsb3cuYzoxMDAxOlx0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xubmV0L21wdGNwL3N1YmZsb3cuYy0xMDAyLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg9NzI9bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC03OS1cdHNldC1cdTAwM2VlbGVtZW50cyA9IDA7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6ODA6XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGF0b21pYzY0X3JlYWQoXHUwMDI2c2V0LVx1MDAzZWV4dF9zaXplKSBcdTAwM2UgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmgtODEtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM9NDE2PWxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA4NzQKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFYCBtYWNybywgYW5kIGl0JiMzOTtzIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L25ldF9kZWJ1Zy5oYC4gQSBxdWljayBjaGVjayBzaG93cyB0aGF0IGl0JiMzOTtzIGdhdGVkIGJ5IGBDT05GSUdfREVCVUdfTkVUYC4gSWYgdGhhdCYjMzk7cyAqbm90KiBlbmFibGVkLCB0aGUgbWFjcm8gZWZmZWN0aXZlbHkgdHVybnMgaW50byBhIGNvbXBpbGUtdGltZSBjaGVjayB1c2luZyBgQlVJTERfQlVHX09OX0lOVkFMSUQoY29uZClgLiAgU28sIHRoZSBvbmx5IHdheSBJJiMzOTttIGdvaW5nIHRvIGFjdHVhbGx5IHNlZSB0aGlzIHRoaW5nICp3YXJuKiBhdCBydW50aW1lIGlzIGlmIGBDT05GSUdfREVCVUdfTkVUYCBpcyBmbGlwcGVkIG9uLiBSaWdodCwgbWFrZXMgc2Vuc2UuCgpHaXZlbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLCB3aGljaCBpbmNsdWRlcyBgSU5FVGAsIGBORVRGSUxURVJgLCB2YXJpb3VzIGBJUF9TRVRgIG9wdGlvbnMgbGlrZSBiaXRtYXAgYW5kIGxpc3Qgc2V0cywgaXQgc2VlbXMgbGlrZSBuZXR3b3JrIGRlYnVnZ2luZyB3b3VsZCBiZSB2YWx1YWJsZSBoZXJlLiBTbywgSSYjMzk7bSBnb2luZyB0byBhZGQgYERFQlVHX05FVGAgdG8gdGhlIGV4aXN0aW5nIGxpc3Qgb2YgY29uZmlncy4gTWFrZXMgdGhlIG1vc3Qgc2Vuc2UgaW4gdGhpcyBjb250ZXh0LgoKTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUgYERFQlVHX05FVGAgaXMgaW5kZWVkIGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gdGhpcyBlbnZpcm9ubWVudC4gR290dGEgYmUgY2VydGFpbiBiZWZvcmUgSSBnbyBtZXNzaW5nIHdpdGggdGhlIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREVCVUdfTkVUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnLmRlYnVnPTEyPWNvbmZpZyBORVRfTlNfUkVGQ05UX1RSQUNLRVJcbi0tXG5uZXQvS2NvbmZpZy5kZWJ1Zy0yMC1cbm5ldC9LY29uZmlnLmRlYnVnOjIxOmNvbmZpZyBERUJVR19ORVRcbm5ldC9LY29uZmlnLmRlYnVnLTIyLVx0Ym9vbCBcJiMzNDtBZGQgZ2VuZXJpYyBuZXR3b3JraW5nIGRlYnVnXCYjMzQ7XG4tLVxubmV0L0tjb25maWcuZGVidWctMjctXG5uZXQvS2NvbmZpZy5kZWJ1ZzoyODpjb25maWcgREVCVUdfTkVUX1NNQUxMX1JUTkxcbm5ldC9LY29uZmlnLmRlYnVnLTI5LVx0Ym9vbCBcJiMzNDtBZGQgZXh0cmEgcGVyLW5ldG5zIG11dGV4IGluc2lkZSBSVE5MXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE2OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNDU4CgkJCQkJCQlvdXRwdXQ6IDI1MgoJCQkJCQkJdGhvdWdodHM6IDU1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRmx1c2ggT3BlcmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBERUJVR19ORVRgIGlzIGluZGVlZCBlbmFibGVkLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSYjMzk7dmUgZ290IHRoZSByZWxldmFudCBjb25maWdzIGhlcmU6IGBJTkVUYCwgYE5FVEZJTFRFUmAsIGBJUF9TRVRgLCBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYElQX1NFVF9CSVRNQVBfUE9SVGAsIGBJUF9TRVRfTElTVF9TRVRgLCBhbmQsIG9mIGNvdXJzZSwgYERFQlVHX05FVGAuCgpOb3csIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGtleSBzeW1ib2xzOiBgaXBfc2V0X2ZsdXNoYCwgYGxpc3Rfc2V0X2ZsdXNoYCwgYGJpdG1hcF9pcF9mbHVzaGAsIGBiaXRtYXBfaXBtYWNfZmx1c2hgLCBhbmQgYGJpdG1hcF9wb3J0X2ZsdXNoYC4gVGhlIGBiaXRtYXBfKl9mbHVzaGAgZnVuY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgYElQU0VUX1RPS0VOKGJpdG1hcF9pcCwgX2ZsdXNoKWAuIEkgbmVlZCB0byBlbnN1cmUgdGhleSYjMzk7cmUgYWNjZXNzaWJsZS4KCkxldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCBgaXBfc2V0X2JpdG1hcF9nZW4uaGAsIEkgZmluZCBgc3RhdGljIHZvaWQgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KWAuIFRoZSBrZXl3b3JkICYjMzQ7c3RhdGljJiMzNDsgaW5pdGlhbGx5IHJhaXNlZCBhIGNvbmNlcm4sIGFzIEkgdGhvdWdodCBpdCBtaWdodCBiZSBpbmxpbmVkIGFuZCB0aGVyZWZvcmUgbm90IHByZXNlbnQgYXMgYSBzZXBhcmF0ZSBzeW1ib2wuIEJ1dCwgZnVydGhlciBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBtdHlwZV92YXJpYW50YCBzdHJ1Y3Q6CgpgYGBjCnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZSA9IHsKCS5rYWR0CT0gbXR5cGVfa2FkdCwKCS51YWR0CT0gbXR5cGVfdWFkdCwKCS5hZHQJPSB7CgkJW0lQU0VUX0FERF0gPSBtdHlwZV9hZGQsCgkJW0lQU0VUX0RFTF0gPSBtdHlwZV9kZWwsCgkJW0lQU0VUX1RFU1RdID0gbXR5cGVfdGVzdCwKCX0sCgkuZGVzdHJveSA9IG10eXBlX2Rlc3Ryb3ksCgkuZmx1c2gJPSBtdHlwZV9mbHVzaCwKLi4uCmBgYAoKVGhhdCBhc3NpZ25tZW50IHRvIGEgZnVuY3Rpb24gcG9pbnRlciBtZWFucyBpdCB3b24mIzM5O3QgYmUgaW5saW5lZC4gU28sIGBiaXRtYXBfaXBfZmx1c2hgLCBgYml0bWFwX2lwbWFjX2ZsdXNoYCwgYW5kIGBiaXRtYXBfcG9ydF9mbHVzaGAgd2lsbCBiZSBwcmVzZW50IGFzIGRpc3RpbmN0IHN5bWJvbHMuIFBlcmZlY3QuIEkmIzM5O2xsIGluY2x1ZGUgdGhlbSBpbiBteSBhbmFseXNpcy4KCk5vdywgbGV0JiMzOTtzIHJlY2FwIG15IHJlYXNvbmluZy4gVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGZsdXNoIG9wZXJhdGlvbnMgZm9yIGJpdG1hcCBhbmQgbGlzdCBJUCBzZXRzLiBFc3NlbnRpYWxseSwgaXQgcmVtb3ZlcyB0aGUgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgd2VyZSByZXNldHRpbmcgZWxlbWVudCBjb3VudHMgYW5kIGV4dGVuc2lvbiBzaXplcyB0byB6ZXJvLiBJbnN0ZWFkLCBpdCBhZGRzIGEgYERFQlVHX05FVF9XQVJOX09OX09OQ0VgIHRvIHZlcmlmeSB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCBtb3ZlcyBhd2F5IGZyb20gc2lsZW50bHkgbWFza2luZyBhbnkgaXNzdWVzIHdoZXJlIGVsZW1lbnQgY291bnRzIGFyZW4mIzM5O3QgcHJvcGVybHkgZGVjcmVtZW50ZWQuIE5vdywgaW5zdGVhZCBvZiBoaWRpbmcgdGhlIGJ1ZywgYSB3YXJuaW5nIHdpbGwgYmUgdHJpZ2dlcmVkLCBhbmQgdGhlIHN0YXRlIHdpbGwgcmVtYWluIG5vbi16ZXJvLiBGdXp6aW5nIGlzIGNyaXRpY2FsIGhlcmUgdG8gdmFsaWRhdGUgdGhhdCBlbGVtZW50IGNvdW50cyBhcmUgYWNjdXJhdGVseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuCgpFdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNjozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7SVBfU0VUJiMzNDssCiAgICAmIzM0O0lQX1NFVF9CSVRNQVBfSVAmIzM0OywKICAgICYjMzQ7SVBfU0VUX0JJVE1BUF9JUE1BQyYjMzQ7LAogICAgJiMzNDtJUF9TRVRfQklUTUFQX1BPUlQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0xJU1RfU0VUJiMzNDssCiAgICAmIzM0O0RFQlVHX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtsaXN0X3NldF9mbHVzaCYjMzQ7LAogICAgJiMzNDtiaXRtYXBfaXBfZmx1c2gmIzM0OywKICAgICYjMzQ7Yml0bWFwX2lwbWFjX2ZsdXNoJiMzNDssCiAgICAmIzM0O2JpdG1hcF9wb3J0X2ZsdXNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmbHVzaCBvcGVyYXRpb25zIGZvciBiaXRtYXAgYW5kIGxpc3QgSVAgc2V0cyBieSByZW1vdmluZyByZWR1bmRhbnQgYXNzaWdubWVudHMgdGhhdCByZXNldCB0aGUgZWxlbWVudCBjb3VudCBhbmQgZXh0ZW5zaW9uIHNpemUgdG8gemVybywgYW5kIGluc3RlYWQgYWRkcyBhIERFQlVHX05FVF9XQVJOX09OX09OQ0UgdG8gYXNzZXJ0IHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBhbHJlYWR5IHplcm8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IHJlbW92ZXMgc3RhdGUtcmVzZXR0aW5nIGFzc2lnbm1lbnRzLCBtZWFuaW5nIHRoYXQgaWYgYSBidWcgZXhpc3RzIHdoZXJlIGVsZW1lbnRzIGFyZSBub3QgcHJvcGVybHkgZGVjcmVtZW50ZWQsIGl0IHdpbGwgbm93IHRyaWdnZXIgYSB3YXJuaW5nIGFuZCBsZWF2ZSB0aGUgc3RhdGUgbm9uLXplcm8sIHJhdGhlciB0aGFuIHNpbGVudGx5IGhpZGluZyB0aGUgYnVnLiBGdXp6aW5nIHRoaXMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgY291bnRzIGFyZSBjb3JyZWN0bHkgbWFuYWdlZCBkdXJpbmcgc2V0IG9wZXJhdGlvbnMgYW5kIGZsdXNoaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtJUF9TRVQmIzM0OywKICAgICYjMzQ7SVBfU0VUX0JJVE1BUF9JUCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfQklUTUFQX0lQTUFDJiMzNDssCiAgICAmIzM0O0lQX1NFVF9CSVRNQVBfUE9SVCYjMzQ7LAogICAgJiMzNDtJUF9TRVRfTElTVF9TRVQmIzM0OywKICAgICYjMzQ7REVCVUdfTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2xpc3Rfc2V0X2ZsdXNoJiMzNDssCiAgICAmIzM0O2JpdG1hcF9pcF9mbHVzaCYjMzQ7LAogICAgJiMzNDtiaXRtYXBfaXBtYWNfZmx1c2gmIzM0OywKICAgICYjMzQ7Yml0bWFwX3BvcnRfZmx1c2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZsdXNoIG9wZXJhdGlvbnMgZm9yIGJpdG1hcCBhbmQgbGlzdCBJUCBzZXRzIGJ5IHJlbW92aW5nIHJlZHVuZGFudCBhc3NpZ25tZW50cyB0aGF0IHJlc2V0IHRoZSBlbGVtZW50IGNvdW50IGFuZCBleHRlbnNpb24gc2l6ZSB0byB6ZXJvLCBhbmQgaW5zdGVhZCBhZGRzIGEgREVCVUdfTkVUX1dBUk5fT05fT05DRSB0byBhc3NlcnQgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFscmVhZHkgemVyby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgcmVtb3ZlcyBzdGF0ZS1yZXNldHRpbmcgYXNzaWdubWVudHMsIG1lYW5pbmcgdGhhdCBpZiBhIGJ1ZyBleGlzdHMgd2hlcmUgZWxlbWVudHMgYXJlIG5vdCBwcm9wZXJseSBkZWNyZW1lbnRlZCwgaXQgd2lsbCBub3cgdHJpZ2dlciBhIHdhcm5pbmcgYW5kIGxlYXZlIHRoZSBzdGF0ZSBub24temVybywgcmF0aGVyIHRoYW4gc2lsZW50bHkgaGlkaW5nIHRoZSBidWcuIEZ1enppbmcgdGhpcyBpcyB2YWx1YWJsZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBjb3VudHMgYXJlIGNvcnJlY3RseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNToyMy40OTcwMTQzNzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDc5ODU4ODYzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBNQUNcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfUE9SVFwiLFxuICAgIFwiSVBfU0VUX0xJU1RfU0VUXCIsXG4gICAgXCJERUJVR19ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImxpc3Rfc2V0X2ZsdXNoXCIsXG4gICAgXCJiaXRtYXBfaXBfZmx1c2hcIixcbiAgICBcImJpdG1hcF9pcG1hY19mbHVzaFwiLFxuICAgIFwiYml0bWFwX3BvcnRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpbnN0ZWFkIGFkZHMgYSBERUJVR19ORVRfV0FSTl9PTl9PTkNFIHRvIGFzc2VydCB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIGEgYnVnIGV4aXN0cyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IHByb3Blcmx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZyBhbmQgbGVhdmUgdGhlIHN0YXRlIG5vbi16ZXJvLCByYXRoZXIgdGhhbiBzaWxlbnRseSBoaWRpbmcgdGhlIGJ1Zy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MjMuNDk3MDIxMjg1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjU5MzUxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNDhmNWVlZWUyZjhjY2NhYmE0YjRiOGY3ZDQ0YmI0MzllN2IwOGUxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTY6MjU6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oXFxuaW5kZXggMjI2ZmRmMTdiNjgzMi4uZDZhN2U2NjA0NTQyMiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhcXG5AQCAtNzcsNyArNzcsNyBAQCBtdHlwZV9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxuIFxcdFxcdG10eXBlX2V4dF9jbGVhbnVwKHNldCk7XFxuIFxcdGJpdG1hcF96ZXJvKG1hcC1cXHUwMDNlbWVtYmVycywgbWFwLVxcdTAwM2VlbGVtZW50cyk7XFxuIFxcdHNldC1cXHUwMDNlZWxlbWVudHMgPSAwO1xcbi1cXHRhdG9taWM2NF9zZXQoXFx1MDAyNnNldC1cXHUwMDNlZXh0X3NpemUsIDApO1xcbitcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGF0b21pYzY0X3JlYWQoXFx1MDAyNnNldC1cXHUwMDNlZXh0X3NpemUpIFxcdTAwM2UgMCk7XFxuIH1cXG4gXFxuIC8qIENhbGN1bGF0ZSB0aGUgYWN0dWFsIG1lbW9yeSBzaXplIG9mIHRoZSBzZXQgZGF0YSAqL1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xcbmluZGV4IGNhM2VmOTQ3OWU4MzguLjAyNGRlM2JjOWZjM2MgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmNcXG5AQCAtNDIwLDggKzQyMCw3IEBAIGxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCBcXHUwMDI2bWFwLVxcdTAwM2VtZW1iZXJzLCBsaXN0KVxcbiBcXHRcXHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcXG4tXFx0c2V0LVxcdTAwM2VlbGVtZW50cyA9IDA7XFxuLVxcdGF0b21pYzY0X3NldChcXHUwMDI2c2V0LVxcdTAwM2VleHRfc2l6ZSwgMCk7XFxuK1xcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2V0LVxcdTAwM2VlbGVtZW50cyBcXHUwMDNlIDApO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNToyMy45NjM2NTgzNjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMDc1MTkyMzMyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBNQUNcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfUE9SVFwiLFxuICAgIFwiSVBfU0VUX0xJU1RfU0VUXCIsXG4gICAgXCJERUJVR19ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImxpc3Rfc2V0X2ZsdXNoXCIsXG4gICAgXCJiaXRtYXBfaXBfZmx1c2hcIixcbiAgICBcImJpdG1hcF9pcG1hY19mbHVzaFwiLFxuICAgIFwiYml0bWFwX3BvcnRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpbnN0ZWFkIGFkZHMgYSBERUJVR19ORVRfV0FSTl9PTl9PTkNFIHRvIGFzc2VydCB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIGEgYnVnIGV4aXN0cyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IHByb3Blcmx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZyBhbmQgbGVhdmUgdGhlIHN0YXRlIG5vbi16ZXJvLCByYXRoZXIgdGhhbiBzaWxlbnRseSBoaWRpbmcgdGhlIGJ1Zy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTQ4ZjVlZWVlMmY4Y2NjYWJhNGI0YjhmN2Q0NGJiNDM5ZTdiMDhlMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTY6MjU6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmggYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhcbmluZGV4IDIyNmZkZjE3YjY4MzIuLmQ2YTdlNjYwNDU0MjIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaFxuQEAgLTc3LDcgKzc3LDcgQEAgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxuIFx0XHRtdHlwZV9leHRfY2xlYW51cChzZXQpO1xuIFx0Yml0bWFwX3plcm8obWFwLVx1MDAzZW1lbWJlcnMsIG1hcC1cdTAwM2VlbGVtZW50cyk7XG4gXHRzZXQtXHUwMDNlZWxlbWVudHMgPSAwO1xuLVx0YXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7XG4rXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGF0b21pYzY0X3JlYWQoXHUwMDI2c2V0LVx1MDAzZWV4dF9zaXplKSBcdTAwM2UgMCk7XG4gfVxuIFxuIC8qIENhbGN1bGF0ZSB0aGUgYWN0dWFsIG1lbW9yeSBzaXplIG9mIHRoZSBzZXQgZGF0YSAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jXG5pbmRleCBjYTNlZjk0NzllODM4Li4wMjRkZTNiYzlmYzNjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY1xuQEAgLTQyMCw4ICs0MjAsNyBAQCBsaXN0X3NldF9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZSwgbiwgXHUwMDI2bWFwLVx1MDAzZW1lbWJlcnMsIGxpc3QpXG4gXHRcdGxpc3Rfc2V0X2RlbChzZXQsIGUpO1xuLVx0c2V0LVx1MDAzZWVsZW1lbnRzID0gMDtcbi1cdGF0b21pYzY0X3NldChcdTAwMjZzZXQtXHUwMDNlZXh0X3NpemUsIDApO1xuK1x0REVCVUdfTkVUX1dBUk5fT05fT05DRShzZXQtXHUwMDNlZWxlbWVudHMgXHUwMDNlIDApO1xuIH1cbiBcbiBzdGF0aWMgdm9pZFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MjMuOTYzNjU5ODUxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTYwMzgzOTIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaDogUG90ZW50aWFsIEZ1bmN0aW9uYWwgQ2hhbmdlcyBhbmQgRnV6emluZyBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgcmVwbGFjaW5nIGFzc2lnbm1lbnRzIHdpdGggYERFQlVHX05FVF9XQVJOX09OX09OQ0VgIGNoZWNrcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSBgYXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7YCBpbiBgbXR5cGVfZmx1c2hgIGlzIGJlaW5nIHJlcGxhY2VkLCBhbmQgc2ltaWxhcmx5LCBgc2V0LVx1MDAzZWVsZW1lbnRzID0gMDsgYXRvbWljNjRfc2V0KFx1MDAyNnNldC1cdTAwM2VleHRfc2l6ZSwgMCk7YCBpbiBgbGlzdF9zZXRfZmx1c2hgIGlzIGdldHRpbmcgc3dhcHBlZCBvdXQuXG5cbkluaXRpYWxseSwgbXkgdGhvdWdodCB3YXMsIFwiV2FpdCwgdGhpcyByZW1vdmVzIHRoZSByZXNldHRpbmcgb2YgdGhvc2UgdmFyaWFibGVzIGFuZCBqdXN0IHB1dHMgYSBkZWJ1ZyB3YXJuaW5nIHRoZXJlP1wiIFRoYXQncyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJpZ2h0PyBJdCdzICpyZW1vdmluZyogYW4gYXNzaWdubWVudCwgbm90IGp1c3QgYWRkaW5nIGxvZ2dpbmcuIFRoYXQncyBhIHNoaWZ0IGluIGJlaGF2aW9yLlxuXG5UaGVuIEkgcGF1c2VkIGFuZCB0aG91Z2h0LCBcIkhvbGQgb24sIGlzIGl0IGp1c3QgYSBkZWJ1ZyB3YXJuaW5nLCBvciBkb2VzIHRoaXMgYWN0dWFsbHkgKmNoYW5nZSogaG93IHRoZSBzeXN0ZW0gd29ya3M/XCIgTGV0J3MgZGlnIGEgYml0IGRlZXBlci4gVGFraW5nIGEgbG9vayBhdCBgbGlzdF9zZXRfZmx1c2hgOlxuXG5gYGBjXG5cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBuLCBcdTAwMjZtYXAtXHUwMDNlbWVtYmVycywgbGlzdClcblx0XHRsaXN0X3NldF9kZWwoc2V0LCBlKTtcbi1cdHNldC1cdTAwM2VlbGVtZW50cyA9IDA7XG4tXHRhdG9taWM2NF9zZXQoXHUwMDI2c2V0LVx1MDAzZWV4dF9zaXplLCAwKTtcbitcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2V0LVx1MDAzZWVsZW1lbnRzIFx1MDAzZSAwKTtcbmBgYFxuXG5NeSBndWVzcyBpcyB0aGF0IGBsaXN0X3NldF9kZWxgIHByb2JhYmx5ICphbHJlYWR5KiBkZWNyZW1lbnRzIGBzZXQtXHUwMDNlZWxlbWVudHNgIGFuZCBgc2V0LVx1MDAzZWV4dF9zaXplYC4gVGhhdCBtZWFucyB0aGUgcmVzZXQgdG8gMCB3YXMgcmVkdW5kYW50LiBJZiBzbywgaXQncyBwb3NzaWJsZSB0aGF0IHJlc2V0dGluZyB0aGVzZSB2YXJpYWJsZXMgd2FzIGhpZGluZyBhIGJ1ZywgYW5kIG5vdywgaXQgd2lsbCBub3QgYmUgcmVzZXQuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2Ugbm93LCBpZiBhIGJ1ZyAqZGlkKiBleGlzdCBhbmQgc29tZWhvdyBsZWZ0IHRoZSBjb3VudHMgbm9uLXplcm8sIGl0IHdvdWxkIHN0YXkgdGhhdCB3YXkgYW5kIHdlIHdvdWxkIGJlIGFsZXJ0ZWQgYnkgdGhlIGRlYnVnIHdhcm5pbmcuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIFwiSXMgdGhpcyBzaWduaWZpY2FudCBlbm91Z2ggdG8gd2FycmFudCBmdXp6aW5nP1wiIEkgdGhpbmsgc28uIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgc2Vuc2UgdGhhdCBpZiB0aGVyZSdzIGFuIGlzc3VlIGxlYWRpbmcgdG8gaW5jb3JyZWN0IGNvdW50cywgdGhpcyB3aWxsIGV4cG9zZSBpdCwgb3IgYXQgbGVhc3Qgd2FybiB1cy4gU28sIGV2ZW4gdGhvdWdoIGl0IGxvb2tzIGxpa2Ugc2ltcGxlIHJlbW92YWwgb2YgcG90ZW50aWFsbHkgcmVkdW5kYW50IGFzc2lnbm1lbnRzLCBpdCBjb3VsZCByZXZlYWwgZXhpc3RpbmcsIG1hc2tlZCBwcm9ibGVtcy4gSSdsbCBtYWtlIHN1cmUgdG8gdmVyaWZ5IGBsaXN0X3NldF9mbHVzaGAgYW5kIGBtdHlwZV9mbHVzaGAgdG8gZW5zdXJlIHRoaXMgaXMgdGhlIGNhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNTozMy41Njc1MDA5NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMzc4ODc4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaXN0X3NldF9mbHVzaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQxNT1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NDE2Omxpc3Rfc2V0X2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTQxNy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU0Mz1saXN0X3NldF9jYW5jZWxfZ2Moc3RydWN0IGlwX3NldCAqc2V0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTAtXFx0LyogRmx1c2ggbGlzdCB0byBkcm9wIHJlZmVyZW5jZXMgdG8gb3RoZXIgaXBzZXRzICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NTE6XFx0bGlzdF9zZXRfZmx1c2goc2V0KTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU1Mi19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTU1ND1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgc2V0X3ZhcmlhbnQgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2Mi1cXHQuZGVzdHJveSA9IGxpc3Rfc2V0X2Rlc3Ryb3ksXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYzo1NjM6XFx0LmZsdXNoXFx0PSBsaXN0X3NldF9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jLTU2NC1cXHQuaGVhZFxcdD0gbGlzdF9zZXRfaGVhZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjU6MzUuMjAxMjk0MDU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0NjcyMzg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBpcHNldF9iaXRtYXBfZ2VuLmhgIE15c3RlcnkqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oYCBoZWFkZXIgZmlsZS4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBgbXR5cGVfZmx1c2hgIGlzIGdvaW5nIG9uIGhlcmUuIEl0J3MgdXN1YWxseSB3b3J0aCBkb3VibGUtY2hlY2tpbmcgdGhlIGxvdy1sZXZlbCBjb2RlIHRoYXQgY291bGQgaW1wYWN0IGJpdG1hcCBvcGVyYXRpb25zIGluIElQIHNldHMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gYG10eXBlX2ZsdXNoYCBhbmQgdGhlIGJpdG1hcCBnZW5lcmF0aW9uIHNwZWNpZmljYWxseSwgYXMgdGhpcyBjb3VsZCBoYXZlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb24gbWVtb3J5IG1hbmFnZW1lbnQgb3IgYXRvbWljaXR5IGR1cmluZyBmbHVzaCBvcGVyYXRpb25zLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgd2F5IHRoZSBiaXRtYXAgc3RydWN0dXJlcyBhcmUgaGFuZGxlZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBwcm9jZXNzLiBBbnkgdW5leHBlY3RlZCBiZWhhdmlvciBoZXJlIGFuZCBpdCBjb3VsZCBiZSB0aGUgc291cmNlIG9mIGEgc3VidGxlLCBidXQgY3JpdGljYWwsIGJ1Zy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc0MCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI1OjM5LjM0ODAyMTI2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc0NTA5NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10eXBlX2ZsdXNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC0yMy0jZGVmaW5lIG10eXBlX21lbXNpemVcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX21lbXNpemUpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oOjI0OiNkZWZpbmUgbXR5cGVfZmx1c2hcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC0yNS0jZGVmaW5lIG10eXBlX2hlYWRcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2hlYWQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg9NzE9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6NzI6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC03My17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg9MzAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC0zMTAtXFx0LmRlc3Ryb3kgPSBtdHlwZV9kZXN0cm95LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaDozMTE6XFx0LmZsdXNoXFx0PSBtdHlwZV9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmgtMzEyLVxcdC5oZWFkXFx0PSBtdHlwZV9oZWFkLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaD0xNjQ9c3RhdGljIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciB6ZXJvbWFzayA9IHt9O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xOTktI3VuZGVmIG10eXBlX2FoYXNoX21lbXNpemVcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oOjIwMDojdW5kZWYgbXR5cGVfZmx1c2hcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2dlbi5oLTIwMS0jdW5kZWYgbXR5cGVfZGVzdHJveVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0yNDctI2RlZmluZSBtdHlwZV9haGFzaF9tZW1zaXplXFx0SVBTRVRfVE9LRU4oTVRZUEUsIF9haGFzaF9tZW1zaXplKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg6MjQ4OiNkZWZpbmUgbXR5cGVfZmx1c2hcXHRcXHRJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMjQ5LSNkZWZpbmUgbXR5cGVfZGVzdHJveVxcdFxcdElQU0VUX1RPS0VOKE1UWVBFLCBfZGVzdHJveSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9NDQ5PXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDo0NTA6bXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtNDUxLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmg9MTU1OD1zdGF0aWMgY29uc3Qgc3RydWN0IGlwX3NldF90eXBlX3ZhcmlhbnQgbXR5cGVfdmFyaWFudCA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfZ2VuLmgtMTU2Ni1cXHQuZGVzdHJveSA9IG10eXBlX2Rlc3Ryb3ksXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaDoxNTY3OlxcdC5mbHVzaFxcdD0gbXR5cGVfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9nZW4uaC0xNTY4LVxcdC5oZWFkXFx0PSBtdHlwZV9oZWFkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNTo0MS4wMjI1MzY1MDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDQ3NzM1MzgxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9ucyBvZiBhbiBJUHNldCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgcmVhY3Rpb24gaXMgYSBtaXggb2YgaW50cmlndWUgYW5kIGNvbmNlcm4uIEl0IHByaW1hcmlseSB0b3VjaGVzIGBpcF9zZXRfYml0bWFwX2dlbi5oYCBhbmQgYGlwX3NldF9saXN0X3NldC5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBtdHlwZV9mbHVzaGAgYW5kIGBsaXN0X3NldF9mbHVzaGAgZnVuY3Rpb25zLiBJdCBzZWVtcyB0byBiZSBjbGVhbmluZyB1cCBzb21lIHN0YXRlIHJlc2V0IGxvZ2ljLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlcGVyY3Vzc2lvbnMuXG5cbkluIGBpcF9zZXRfYml0bWFwX2dlbi5oYCwgdGhlIHBhdGNoIHJlbW92ZXMgYGF0b21pYzY0X3NldChcdTAwMjZzZXQtXHUwMDNlZXh0X3NpemUsIDApO2AgYWZ0ZXIgemVyb2luZyBvdXQgdGhlIGJpdG1hcCBhbmQgcmVzZXR0aW5nIGBzZXQtXHUwMDNlZWxlbWVudHNgIGluIGBtdHlwZV9mbHVzaGAuIFRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gSXQgYWxzbyBhZGRzIGEgZGVidWcgd2FybmluZy4gTm93LCB0aGUgd2VpcmQgcGFydCBpcyBgbXR5cGVfZmx1c2hgIHN0aWxsIGhhcyBgc2V0LVx1MDAzZWVsZW1lbnRzID0gMDtgLiBUaGlzIGluY29uc2lzdGVuY3kgaXMgYSByZWQgZmxhZy5cblxuVGhlIGBpcF9zZXRfbGlzdF9zZXQuY2AgY2hhbmdlcyBhcmUgYSBiaXQgbW9yZSBpbnRlcmVzdGluZy4gYGxpc3Rfc2V0X2ZsdXNoYCB1c2VkIHRvIHJlc2V0ICpib3RoKiBgc2V0LVx1MDAzZWVsZW1lbnRzYCBhbmQgYHNldC1cdTAwM2VleHRfc2l6ZWAuIFRoZSBwYXRjaCByZW1vdmVzIHRoZXNlIGFzc2lnbm1lbnRzIGFuZCBhZGRzIGEgZGVidWcgd2FybmluZyBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgdG8gY2hlY2sgaWYgYHNldC1cdTAwM2VlbGVtZW50c2AgaXMgZ3JlYXRlciB0aGFuIHplcm8uXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZS4gSWYgdGhlIG9yaWdpbmFsIGNvZGUgKnJlbGllZCogb24gdGhlc2UgYXNzaWdubWVudHMgKGFuZCBJJ20gc3VzcGljaW91cyB0aGF0IGl0IG1pZ2h0KSwgdGhlbiB3ZSBoYXZlIGEgcG90ZW50aWFsIHJlZ3Jlc3Npb24uIElmIHRoZXkgd2VyZSByZWR1bmRhbnQsIHRoZW4gdGhpcyBpcyBhIGNsZWFudXAsIGFuZCB0aGUgZGVidWcgd2FybmluZyBpcyBhIHNhZmV0eSBuZXQuXG5cbkdpdmVuIHRoZSBuYXR1cmUgb2YgbmV0d29yayBjb2RlLCBhbmQgbXkgZXhwZXJpZW5jZSBpbiB0aGlzIGZpZWxkLCB0aGUgcHJlc2VuY2Ugb2YgdGhlIGRlYnVnIHdhcm5pbmcgYW5kIHRoZSBhc3NpZ25tZW50cycgcmVtb3ZhbCBzY3JlYW0gXCJmdXp6IHRoaXNcIi4gIEV2ZW4gaWYgdGhlIGFzc2lnbm1lbnRzIHdlcmUgcmVkdW5kYW50LCByZW1vdmluZyB0aGVtIGNvdWxkIGV4cG9zZSBhIHN1YnRsZSBidWcsIGxpa2UgYSBtaXNzaW5nIGRlY3JlbWVudCBzb21ld2hlcmUuIElmIGBzZXQtXHUwMDNlZWxlbWVudHNgIG9yIGBzZXQtXHUwMDNlZXh0X3NpemVgIGFyZW4ndCBiZWluZyBwcm9wZXJseSBtYW5hZ2VkLCB0aGlzIHBhdGNoIHdpbGwgbWFrZSB0aGUgaXNzdWUgdmlzaWJsZSB3aXRoIGEgd2FybmluZywgYW5kIGxpa2VseSB1bmNvdmVyIHNvbWUgc2VyaW91cyBjb3JuZXIgY2FzZSBpc3N1ZXMuIFRoaXMgbWFrZXMgaXQgYW4gaWRlYWwgdGFyZ2V0IGZvciBzeXprYWxsZXIuIFRoZSBkZWJ1ZyB3YXJuaW5nIHdpbGwgcXVpY2tseSBicmluZyBhbnkgaW5jb3JyZWN0IHZhbHVlcyB0byBsaWdodCwgYW5kIHRoZSByZW1vdmVkIGFzc2lnbm1lbnRzIG9wZW4gdGhlIGRvb3IgdG8gYWxsIHNvcnRzIG9mIG90aGVyIHByb2JsZW1zLlxuXG5TbywgdGhlIGtleSBmdW5jdGlvbnMgaGVyZSBhcmUgYGxpc3Rfc2V0X2ZsdXNoYCBhbmQgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIGBtdHlwZV9mbHVzaGAuIGBsaXN0X3NldF9mbHVzaGAgaXMgc3RhdGljIGFuZCBhc3NpZ25lZCB0byBgLmZsdXNoYCBpbiBgc2V0X3ZhcmlhbnRgLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBgaXBfc2V0X2ZsdXNoYCBpbiBgaXBfc2V0X2NvcmUuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGNhbGxlZCBhbmQgd2hhdCB0aGUgcG9zc2libGUgaW50ZXJhY3Rpb24gc2NlbmFyaW9zIGFyZS4gSSB3aWxsIG5lZWQgdG8gbG9vayBkZWVwZXIgaW50byB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3ODAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6NDEuNDk5ODkyOTE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDc1NTY5NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X2ZsdXNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzAyPXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMDQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTEtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMTI6c3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMy1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjUtXFx0XFx0XFx0aWYgKHMpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMjY6XFx0XFx0XFx0XFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNy1cXHRcXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcXHRcXHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2NS1cXHRbSVBTRVRfQ01EX0ZMVVNIXVxcdD0ge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTY2OlxcdFxcdC5jYWxsXFx0XFx0PSBpcF9zZXRfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjctXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfTVVURVgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjQzLjAwNzQ1NTY0OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NDMzNjk0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBGbHVzaGluZyBNZWNoYW5pc20qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgSVAgc2V0IGZsdXNoaW5nIGlzIGltcGxlbWVudGVkLiBJdCBsb29rcyBsaWtlIGBpcF9zZXRfZmx1c2hgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgZmx1c2ggb3BlcmF0aW9uIGl0c2VsZi4gVGhhdCBtYWtlcyBzZW5zZSwgdGhlIGNvZGUgaGFzIHRvIGJlZ2luIHNvbWV3aGVyZS5cblxuTm93LCBoZXJlJ3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBzZWUgYSBgbXR5cGVfZmx1c2hgIHRlbXBsYXRlLCBzcGVjaWZpY2FsbHkgaW4gYGlwX3NldF9iaXRtYXBfZ2VuLmhgLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgcmVhbCBtYWdpYyBoYXBwZW5zLiBJdCBsb29rcyBsaWtlIHRoaXMgdGVtcGxhdGUgaXMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGFjdHVhbCBmbHVzaCBmdW5jdGlvbnMgZm9yIGRpZmZlcmVudCBkYXRhIHR5cGVzLiBUaGV5J3JlIHByb2JhYmx5IGluc3RhbnRpYXRlZCB0byBjcmVhdGUgZnVuY3Rpb25zIGxpa2UgYGJpdG1hcF9pcF9mbHVzaGAsIGBiaXRtYXBfaXBtYWNfZmx1c2hgLCBhbmQgYGJpdG1hcF9wb3J0X2ZsdXNoYC4gVGhpcyBhcHByb2FjaCBpcyBmYWlybHkgZWZmaWNpZW50IGFzIGl0IGFsbG93cyB0aGVtIHRvIHJldXNlIHRoZSBzYW1lIHN0cnVjdHVyZSwgYnV0IHdpdGggdmFyaWF0aW9ucyB0byBoYW5kbGUgdGhlIGRpZmZlcmVudCB1bmRlcmx5aW5nIGRhdGEuIEludGVyZXN0aW5nIHVzZSBvZiB0ZW1wbGF0ZXMgdGhlcmUuIEknZCBoYXZlIHRvIGxvb2sgZnVydGhlciB0byBzZWUgd2hhdCBkZWZpbmVzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ0MCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjQ3Ljk1MDgyOTA1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MDIxMDM1MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYml0bWFwX2lwX2ZsdXNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNjo0OS40OTEwNTAzMDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk4MDAwNTEyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGVjb2RpbmcgdGhhdCBNYWNybzogQSBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJJ20gbG9va2luZyBhdCB0aGlzIGBtdHlwZV9mbHVzaGAgbWFjcm8gZGVmaW5pdGlvbiBhbmQgaXQncyBzdGFydGluZyB0byB0cmlnZ2VyIHNvbWUgYWxhcm1zLiBJdCdzIGRlZmluZWQgYXMgYCNkZWZpbmUgbXR5cGVfZmx1c2ggSVBTRVRfVE9LRU4oTVRZUEUsIF9mbHVzaClgLiBPa2F5LCBzbyBgbXR5cGVfZmx1c2hgIGlzIGJlaW5nIGNvbnN0cnVjdGVkIHZpYSBhIG1hY3JvLCB3aGljaCBpc24ndCB1bnVzdWFsLCBidXQgdGhlIGBNVFlQRWAgcGFydCBpcyB0aGUga2V5LiBUaGF0J3MgdGhlIG9uZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCwgYW5kIEkgc3VzcGVjdCBpdCdzIHBvaW50aW5nIG1lIHRvIHNvbWUgY29yZSBzdHJ1Y3R1cmUgb3IgdHlwZSBkZWZpbml0aW9uLlxuXG5UaW1lIHRvIHN3aXRjaCBnZWFycy4gTGV0J3MgZGlnIGludG8gYGlwX3NldF9iaXRtYXBfaXAuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCB0aGlzIGVsdXNpdmUgYE1UWVBFYCBhY3R1YWxseSAqaXMqLiBUaGlzIGtpbmQgb2YgbWFjcm8gZGFuY2UgaXMgb2Z0ZW4gaG93IHRoZXkgYWJzdHJhY3QgYXdheSB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMsIHByb2JhYmx5IGZvciBmbGV4aWJpbGl0eSBvciBwbGF0Zm9ybS1zcGVjaWZpYyByZWFzb25zLiBJIG5lZWQgdG8gdW5yYXZlbCB0aGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoYXQgYG10eXBlX2ZsdXNoYCBpcyB1bHRpbWF0ZWx5IHJlZmVycmluZyB0by4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyEgVGltZSB0byByZXZlcnNlIGVuZ2luZWVyLiBMZXQncyBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc1NCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI2OjU0LjQ3MTA1ODE4NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzOTMxMjcyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIE1UWVBFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jPTMzPU1PRFVMRV9BTElBUyhcXFwiaXBfc2V0X2JpdG1hcDppcFxcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jLTM0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcC5jOjM1OiNkZWZpbmUgTVRZUEVcXHRcXHRiaXRtYXBfaXBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYy0zNi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXBtYWMuYz0zMz1NT0RVTEVfQUxJQVMoXFxcImlwX3NldF9iaXRtYXA6aXAsbWFjXFxcIik7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmMtMzQtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmM6MzU6I2RlZmluZSBNVFlQRVxcdFxcdGJpdG1hcF9pcG1hY1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jLTM2LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM9Mjc9TU9EVUxFX0FMSUFTKFxcXCJpcF9zZXRfYml0bWFwOnBvcnRcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jLTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmM6Mjk6I2RlZmluZSBNVFlQRVxcdFxcdGJpdG1hcF9wb3J0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYy0zMC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYz03MD1oYXNoX2lwNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA0X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNF9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTc0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYzo3NTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmMtNzYtI2RlZmluZSBIT1NUX01BU0tcXHQzMlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jPTIwMj1oYXNoX2lwNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXA2X2VsZW0gKm5leHQsIGNvbnN0IHN0cnVjdCBoYXNoX2lwNl9lbGVtICplKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcC5jLTIwOC1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwLmM6MjA5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwNlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXAuYy0yMTAtI2RlZmluZSBIT1NUX01BU0tcXHQxMjhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYz03Mj1oYXNoX2lwbWFjNF9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtNzctXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jOjc4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwbWFjNFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYy03OS0jZGVmaW5lIFBGXFx0XFx0NFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jPTE4MD1oYXNoX2lwbWFjNl9kYXRhX25leHQoc3RydWN0IGhhc2hfaXBtYWM2X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFjLmMtMTg5LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYWMuYzoxOTA6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfaXBtYWM2XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hYy5jLTE5MS0jZGVmaW5lIFBGXFx0XFx0Nlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYz02OT1oYXNoX2lwbWFyazRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFyazRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtNzQtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYzo3NTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcG1hcms0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcG1hcmsuYy03Ni0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jPTIwNT1oYXNoX2lwbWFyazZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwbWFyazZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmMtMjEyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBtYXJrLmM6MjEzOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwbWFyazZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwbWFyay5jLTIxNC0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYz03OT1oYXNoX2lwcG9ydDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtODUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYzo4NjojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcHBvcnQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnQuYy04Ny0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jPTI0OT1oYXNoX2lwcG9ydDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmMtMjU3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0LmM6MjU4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydC5jLTI1OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jPTc3PWhhc2hfaXBwb3J0aXA0X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRpcDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04NC0vKiBDb21tb24gZnVuY3Rpb25zICovXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jOjg1OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydGlwNFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy04Ni0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmM9MjQ4PWhhc2hfaXBwb3J0aXA2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9pcHBvcnRpcDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0aXAuYy0yNTYtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9pcHBvcnRpcC5jOjI1NzojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9pcHBvcnRpcDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydGlwLmMtMjU4LSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTEyMT1oYXNoX2lwcG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMTI4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6MTI5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTEzMC0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jPTM3OT1oYXNoX2lwcG9ydG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX2lwcG9ydG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmMtMzg3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfaXBwb3J0bmV0LmM6Mzg4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX2lwcG9ydG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX2lwcG9ydG5ldC5jLTM4OS0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYz02MT1oYXNoX21hYzRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX21hYzRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbWFjLmMtNjUtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYzo2NjojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9tYWM0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9tYWMuYy02Ny0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTEwMj1oYXNoX25ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMTA3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MTA4OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTEwOS0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jPTI3Mz1oYXNoX25ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmMtMjgwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0LmM6MjgxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldC5jLTI4Mi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jPTEyOT1oYXNoX25ldGlmYWNlNF9kYXRhX25leHQoc3RydWN0IGhhc2hfbmV0aWZhY2U0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMTM0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYzoxMzU6I2RlZmluZSBNVFlQRVxcdFxcdGhhc2hfbmV0aWZhY2U0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jLTEzNi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmM9MzYzPWhhc2hfbmV0aWZhY2U2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRpZmFjZTZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0aWZhY2UuYy0zNzAtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRpZmFjZS5jOjM3MTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRpZmFjZTZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldGlmYWNlLmMtMzcyLSNkZWZpbmUgSE9TVF9NQVNLXFx0MTI4XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTEyNT1oYXNoX25ldG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDRfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMTMwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MTMxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldG5ldDRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTEzMi0jZGVmaW5lIEhPU1RfTUFTS1xcdDMyXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jPTM2Mz1oYXNoX25ldG5ldDZfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldG5ldDZfZWxlbSAqbmV4dCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmMtMzcwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0bmV0LmM6MzcxOiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldG5ldDZcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldG5ldC5jLTM3Mi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM9MTE3PWhhc2hfbmV0cG9ydDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnQuYy0xMjMtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmM6MTI0OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMTI1LSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jPTMzND1oYXNoX25ldHBvcnQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0LmMtMzQyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jOjM0MzojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydC5jLTM0NC0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM9MTMyPWhhc2hfbmV0cG9ydG5ldDRfZGF0YV9uZXh0KHN0cnVjdCBoYXNoX25ldHBvcnRuZXQ0X2VsZW0gKm5leHQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9oYXNoX25ldHBvcnRuZXQuYy0xMzgtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmM6MTM5OiNkZWZpbmUgTVRZUEVcXHRcXHRoYXNoX25ldHBvcnRuZXQ0XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtMTQwLSNkZWZpbmUgSE9TVF9NQVNLXFx0MzJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jPTQyNj1oYXNoX25ldHBvcnRuZXQ2X2RhdGFfbmV4dChzdHJ1Y3QgaGFzaF9uZXRwb3J0bmV0Nl9lbGVtICpuZXh0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfaGFzaF9uZXRwb3J0bmV0LmMtNDM0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jOjQzNTojZGVmaW5lIE1UWVBFXFx0XFx0aGFzaF9uZXRwb3J0bmV0Nlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2hhc2hfbmV0cG9ydG5ldC5jLTQzNi0jZGVmaW5lIEhPU1RfTUFTS1xcdDEyOFxcbi0tXFxuc291bmQvcGNpL2FzaWhwaS9ocGk2MjA1LmM9MTYwMD1zdGF0aWMgdTE2IGJvb3RfbG9hZGVyX2NvbmZpZ19lbWlmKHN0cnVjdCBocGlfYWRhcHRlcl9vYmogKnBhbywgaW50IGRzcF9pbmRleClcXG4tLVxcbnNvdW5kL3BjaS9hc2locGkvaHBpNjIwNS5jLTE2MjAtI2RlZmluZSBSU1RfT0ZTIDhcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYzoxNjIxOiNkZWZpbmUgTVRZUEVfT0ZTIDRcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYy0xNjIyLSNkZWZpbmUgUkhfT0ZTIDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6MjY6NTYuMDEwMzc1MTM5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5Mjg2OTI3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBpcF9zZXQgRmx1c2ggRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIGBpcF9zZXRfZmx1c2hgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGZsdXNoaW5nIHNldHMuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaDsgYG10eXBlX2ZsdXNoYCBhbHNvIHNlZW1zIHRvIGJlIHJlbGV2YW50LCBhcyBpdCdzIHVzZWQgd2l0aGluIGBpcF9zZXRfaGFzaF9nZW4uaGAuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIGlmIHRoYXQgaGVhZGVyIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgcmVjZW50bHkuIExldCBtZSBjaGVjayB0aGUgZGlmZi4uLiBOb3BlLCBpdCBsb29rcyBsaWtlIG9ubHkgYGlwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgaXBfc2V0X2xpc3Rfc2V0LmNgIGhhdmUgY2hhbmdlcy4gU28gYGlwX3NldF9oYXNoX2dlbi5oYCBpcyBsaWtlbHkgbm90IHRoZSBmb2N1cyBoZXJlLlxuXG5SaWdodCwgYmFjayB0byBgbXR5cGVfZmx1c2hgLiBJdCdzIHVzZWQgaW4gYGlwX3NldF9iaXRtYXBfZ2VuLmhgIGZvciBgYml0bWFwX2lwYCwgYGJpdG1hcF9pcG1hY2AsIGFuZCBgYml0bWFwX3BvcnRgLiBUaGlzIG1lYW5zIHRoYXQgYGlwX3NldF9mbHVzaGAgaXMgc3RpbGwgdGhlIG1haW4gZm9jdXMgYnV0IGl0IGlzIGltcG9ydGFudCB0byByZWFsaXplIHRoZSBjb25uZWN0aW9uIHdpdGggdGhlIGJpdG1hcCBzZXRzLlxuXG5Ob3csIGxldCdzIGRldGVybWluZSB0aGUgcmVhY2hhYmlsaXR5IGFuZCBhbnkgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgZm9yIGBpcF9zZXRfZmx1c2hgLiBJdCdzIGxvY2F0ZWQgaW4gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuY2AuIEFzIGZvciB0aGUgY29uZmlndXJhdGlvbnMgbmVlZGVkLCBpdCBzZWVtcyB3ZSdyZSBsb29raW5nIGF0IGBDT05GSUdfSVBfU0VUYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX0lQYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX0lQTUFDYCwgYENPTkZJR19JUF9TRVRfQklUTUFQX1BPUlRgLCBhbmQgYENPTkZJR19JUF9TRVRfTElTVF9TRVRgLiBFeGNlbGxlbnQsIHRoYXQgY292ZXJzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBiaXRtYXAgc2V0IHZhcmlhbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY0MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzowNS45MzkwNzA3NDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjA0MTMwNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NFVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MjptZW51Y29uZmlnIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJUCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xND1pZiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2OmNvbmZpZyBJUF9TRVRfTUFYXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3LVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgSVAgc2V0c1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yNy1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mjg6Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcImJpdG1hcDppcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zNi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Mzc6Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcImJpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDUtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjQ2OmNvbmZpZyBJUF9TRVRfQklUTUFQX1BPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcImJpdG1hcDpwb3J0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTU0LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo1NTpjb25maWcgSVBfU0VUX0hBU0hfSVBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTYtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjQtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjY1OmNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03My1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzQ6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy03NS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTgyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4Mzpjb25maWcgSVBfU0VUX0hBU0hfSVBQT1JUSVBcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctODQtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCxpcCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05Mi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTM6Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMDItXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEwMzpjb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMTEtXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjExMjpjb25maWcgSVBfU0VUX0hBU0hfTUFDXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiaGFzaDptYWMgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIwLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMjE6Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRORVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTIyLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjktXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMDpjb25maWcgSVBfU0VUX0hBU0hfTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTM4LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxMzk6Y29uZmlnIElQX1NFVF9IQVNIX05FVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDAtXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDctXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE0ODpjb25maWcgSVBfU0VUX0hBU0hfTkVUUE9SVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNDktXFx0dHJpc3RhdGUgXFxcImhhc2g6bmV0LHBvcnQgc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTU3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTg6Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTY3LVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNjg6Y29uZmlnIElQX1NFVF9MSVNUX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjktXFx0dHJpc3RhdGUgXFxcImxpc3Q6c2V0IHNldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzowNy40OTk0ODg2NjRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0MDk2NjQzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhlc2UgY29uZmlndXJhdGlvbnM6XG5cbioqRGVlcCBEaXZlIGludG8gSVBzZXQgQ29uZmlndXJhdGlvbnMgYW5kIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIElQc2V0IGNvbmZpZ3VyYXRpb25zOiBgSVBfU0VUYCwgYElQX1NFVF9CSVRNQVBfSVBgLCBgSVBfU0VUX0JJVE1BUF9JUE1BQ2AsIGBJUF9TRVRfQklUTUFQX1BPUlRgLCBhbmQgYElQX1NFVF9MSVNUX1NFVGAuIEl0J3MgYSBzdGFuZGFyZCBzZXQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGNsZWFybHkuIFdhaXQgYSBtaW51dGXigKYgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGBJUF9TRVRgIGlzIGJ1aWx0IG9uIHRvcCBvZiBgTkVURklMVEVSYC4gVGhhdCdzIGltcG9ydGFudC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGludGVyYWN0aW9uIGFuZCBhbnkgaW1wbGljYXRpb25zIGl0IG1pZ2h0IGhhdmUgZm9yIG15IHNwZWNpZmljIHVzZSBjYXNlLCBzbyBsZXQncyBoZWFkIG92ZXIgdG8gYG5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ2AuIFRpbWUgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgaG93IHRoZXNlIGVsZW1lbnRzIHdvcmsgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDkzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjc6MTguOTA5MTU1MzQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjUwMjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mj1tZW51Y29uZmlnIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJUCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTUtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTY9Y29uZmlnIElQX1NFVF9NQVhcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xOS1cXHRyYW5nZSAyIDY1NTM0XFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0yOD1jb25maWcgSVBfU0VUX0JJVE1BUF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiYml0bWFwOmlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzozMDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0zMS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9Mzc9Y29uZmlnIElQX1NFVF9CSVRNQVBfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcImJpdG1hcDppcCxtYWMgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjM5OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQwLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz00Nj1jb25maWcgSVBfU0VUX0JJVE1BUF9QT1JUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTQ3LVxcdHRyaXN0YXRlIFxcXCJiaXRtYXA6cG9ydCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNDktXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTU1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NTc6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNTgtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTY1PWNvbmZpZyBJUF9TRVRfSEFTSF9JUE1BUktcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjYtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAsbWFyayBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6Njc6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNjgtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTc0PWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcImhhc2g6aXAscG9ydCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6NzY6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctNzctXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTgzPWNvbmZpZyBJUF9TRVRfSEFTSF9JUFBPUlRJUFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LGlwIHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzo4NTpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy04Ni1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9OTM9Y29uZmlnIElQX1NFVF9IQVNIX0lQUE9SVE5FVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy05NC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDppcCxwb3J0LG5ldCBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6OTU6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEwMz1jb25maWcgSVBfU0VUX0hBU0hfSVBNQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJoYXNoOmlwLG1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTEyPWNvbmZpZyBJUF9TRVRfSEFTSF9NQUNcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJoYXNoOm1hYyBzZXQgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc6MTE0OlxcdGRlcGVuZHMgb24gSVBfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTExNS1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWc9MTIxPWNvbmZpZyBJUF9TRVRfSEFTSF9ORVRQT1JUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEyMi1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQscG9ydCxuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEyMzpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMjQtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzMD1jb25maWcgSVBfU0VUX0hBU0hfTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTEzMS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjEzMjpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xMzMtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTEzOT1jb25maWcgSVBfU0VUX0hBU0hfTkVUTkVUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE0MC1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsbmV0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNDE6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQyLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNDg9Y29uZmlnIElQX1NFVF9IQVNIX05FVFBPUlRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJoYXNoOm5ldCxwb3J0IHNldCBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxNTA6XFx0ZGVwZW5kcyBvbiBJUF9TRVRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L0tjb25maWctMTUxLVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZz0xNTg9Y29uZmlnIElQX1NFVF9IQVNIX05FVElGQUNFXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE1OS1cXHR0cmlzdGF0ZSBcXFwiaGFzaDpuZXQsaWZhY2Ugc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE2MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNjEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE2OD1jb25maWcgSVBfU0VUX0xJU1RfU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwibGlzdDpzZXQgc2V0IHN1cHBvcnRcXFwiXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnOjE3MDpcXHRkZXBlbmRzIG9uIElQX1NFVFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xNzEtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnPTE3OD1jb25maWcgR0NPVl9QUk9GSUxFX0lQU0VUXFxubmV0L25ldGZpbHRlci9pcHNldC9LY29uZmlnLTE3OS1cXHRib29sIFxcXCJFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIGlwc2V0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZzoxODA6XFx0ZGVwZW5kcyBvbiBHQ09WX0tFUk5FTFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvS2NvbmZpZy0xODEtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzoxOC45NjE2NjIwNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjAzNzM2NzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIElQIFNldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYElQIFNldGAgY29uZmlndXJhdGlvbiBjb2RlLiBJdCdzIGNsZWFyIHRoYXQgYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgZm91bmRhdGlvbmFsLiBUaGVuLCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBzcGVjaWZpYyBgSVAgU2V0YCBmdW5jdGlvbmFsaXRpZXMuIExvb2tpbmcgYXQgdGhlIGNvbmZpZ3MsIEkndmUgZ290IGBJTkVUYCwgYE5FVEZJTFRFUmAsIGBJUF9TRVRgLCBmb2xsb3dlZCBieSB0aGUgYml0bWFwIGNvbmZpZ3VyYXRpb25zOiBgSVBfU0VUX0JJVE1BUF9JUGAsIGBJUF9TRVRfQklUTUFQX0lQTUFDYCwgYW5kIGBJUF9TRVRfQklUTUFQX1BPUlRgLiBUaG9zZSBzZWVtIHRvIGJlIHRoZSBrZXkgb25lcyB1c2luZyBgaXBfc2V0X2JpdG1hcF9nZW4uaGAuIEFuZCwgYElQX1NFVF9MSVNUX1NFVGAgaXMgZGVmaW5pdGVseSB1c2luZyBgaXBfc2V0X2xpc3Rfc2V0LmNgLiBTbyB0byBiZSBwcmVjaXNlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmZpZ3MgYXJlIGFsbCBlbmFibGVkOiBgSU5FVGAsIGBORVRGSUxURVJgLCBgSVBfU0VUYCwgYElQX1NFVF9CSVRNQVBfSVBgLCBgSVBfU0VUX0JJVE1BUF9JUE1BQ2AsIGBJUF9TRVRfQklUTUFQX1BPUlRgLCBhbmQgYElQX1NFVF9MSVNUX1NFVGAuXG5cbk5vdywgbGV0J3Mgem9vbSBpbiBvbiBgaXBfc2V0X2ZsdXNoYC4gVGhhdCdzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGFuZCBhIG5ldGxpbmsgY2FsbGJhY2ssIHNwZWNpZmljYWxseSBoYW5kbGluZyBgSVBTRVRfQ01EX0ZMVVNIYC4gIEkgd29uZGVyIGlmIHRoYXQgYGZsdXNoYCBmdW5jdGlvbiBpcyB1c2VkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUgYmFzZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYWxsIGdyYXBoIHRoZXJlLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGBpcF9zZXRfZmx1c2hfc2V0YCBhbmQgc2VlIHdoYXQgdGhhdCBleHBvc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ3OCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzoyNS41NjU0MDE2NDJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjkzNzUzOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfc2V0X2ZsdXNoX3NldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM9MTMwMj1zdGF0aWMgdm9pZFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzAzOmlwX3NldF9mbHVzaF9zZXQoc3RydWN0IGlwX3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzA0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzEyPXN0YXRpYyBpbnQgaXBfc2V0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cXHRcXHRcXHRpZiAocylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMyNjpcXHRcXHRcXHRcXHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVxcdFxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzMyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzMzOlxcdFxcdGlwX3NldF9mbHVzaF9zZXQocyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzoyNy4wOTQ3ODI1MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTUzNTM2NzY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZsdXNoIE9wZXJhdGlvbiBpbiBgaXBfc2V0YCoqXG5cbk9rYXksIHRoZSB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGZsdXNoaW5nIG1lY2hhbmlzbSB3aXRoaW4gYGlwX3NldGAsIGFuZCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgYGlwX3NldF9mbHVzaGAsIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZS4gUmlnaHQsIGl0J3MgYSBuZXRsaW5rIGNhbGxiYWNrLCBzbyBpdCBoYW5kbGVzIHRoZSBuZXR3b3JrIGludGVyZmFjZSBjb21tdW5pY2F0aW9uLCB3aGljaCBhbGlnbnMgd2l0aCBmbHVzaGluZy4gTm93IEkgbmVlZCB0byBjb25maXJtIHRoaXMgYnkgZGlnZ2luZyBpbnRvIGBpcF9zZXRfY29yZS5jYCBhbmQgZmluZGluZyB0aGUgZnVuY3Rpb24uXG5cbkFscmlnaHQsIHRoZXJlIGl0IGlzOiBgaXBfc2V0X2ZsdXNoYC4gQnV0IGl0J3Mgc3RhdGljLiBIbW0sIHVzdWFsbHksIEkgcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gSXQncyB1c2VkIGFzIGEgY2FsbGJhY2ssIHNvIGl0IHNob3VsZCBub3QgYmUgaW5saW5lZC4gSSBqdXN0IGNvbmZpcm1lZDogYHN0YXRpYyBpbnQgaXBfc2V0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZm5sX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pYC5cblxuVGhlIGZhY3QgdGhhdCBpdCdzIHN0YXRpYyBtYWtlcyBtZSBhIGxpdHRsZSBjYXV0aW91cy4gSXQgbWlnaHQgbWVhbiB0aGUgY29tcGlsZXIgb3B0aW1pemVkIGl0IGFnZ3Jlc3NpdmVseSwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBpdCBub3QgYmVpbmcgYSBkaXN0aW5jdCBzeW1ib2wgSSBjb3VsZCBwb2ludCB0by4gQnV0IGJlY2F1c2UgaXQncyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBpbiBgaXBfc2V0X25ldGxpbmtfc3Vic3lzX2NiYCwgaXQgc2hvdWxkbid0IGJlIGlubGluZWQuIFRoYXQncyBhIGdvb2Qgc2lnbi4gTGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbHRlcm5hdGl2ZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGZsdXNoLCBhcyB0aGUgaW5zdHJ1Y3Rpb25zIHN1Z2dlc3RlZC4gQ2hlY2tpbmcgYGlwX3NldF9kZXN0cm95YCB3b24ndCB3b3JrLCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBjaGFuZ2VzIGBmbHVzaGAuIEkgbmVlZCB0byByZXZpZXcgYGlwX3NldF9jb3JlLmNgIGZvciBhbnkgcmVsYXRlZCwgbm9uLXN0YXRpYyBmdW5jdGlvbiBkZWZpbml0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNjUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjc6MzYuNjMwMTUzMzExWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTg5MzIzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF9zZXRfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0xMzAyPXN0YXRpYyB2b2lkXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMDM6aXBfc2V0X2ZsdXNoX3NldChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMDQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMTEtXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMTI6c3RhdGljIGludCBpcF9zZXRfZmx1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mbmxfaW5mbyAqaW5mbyxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMy1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgYXR0cltdKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMjUtXFx0XFx0XFx0aWYgKHMpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjEzMjY6XFx0XFx0XFx0XFx0aXBfc2V0X2ZsdXNoX3NldChzKTtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNy1cXHRcXHR9XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMzMi1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMzMzpcXHRcXHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzM0LVxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYz0yMTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jYWxsYmFjayBpcF9zZXRfbmV0bGlua19zdWJzeXNfY2JbSVBTRVRfTVNHX01BWF0gPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2NS1cXHRbSVBTRVRfQ01EX0ZMVVNIXVxcdD0ge1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoyMTY2OlxcdFxcdC5jYWxsXFx0XFx0PSBpcF9zZXRfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTIxNjctXFx0XFx0LnR5cGVcXHRcXHQ9IE5GTkxfQ0JfTVVURVgsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI3OjM2LjY3MjA1MDUwOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUxOTI5NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIElQIFNldCBGbHVzaCBPcHRpbWl6YXRpb24qKlxuXG5Pa2F5LCBoZXJlJ3MgaG93IEknbSBhcHByb2FjaGluZyB0aGlzLiBJJ20gbG9va2luZyBhdCB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIGZsdXNoaW5nIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBJUCBzZXQgZnJhbWV3b3JrLiBJbml0aWFsbHksIEkgbm90ZWQgdGhhdCBgaXBfc2V0X2ZsdXNoYCBpcyBzdGF0aWMgYnV0IHVzZWQgYXMgYSBjYWxsYmFjaywgd2hpY2ggaXMgZmluZSBpbiBwcmluY2lwbGUuIE15IHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIG5ldGxpbmsgbWVzc2FnZXMgaW4gbmV0ZmlsdGVyIGlzIGBuZm5ldGxpbmtfcmN2X21zZ2AsIGJ1dCBmb3IgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGgsIGBpcF9zZXRfZmx1c2hgIGlzIHRoZSBtb3JlIHJlbGV2YW50IHBvaW50LiBJIGNoZWNrZWQgaWYgYGlwX3NldF9mbHVzaGAgaXMgZXhwb3J0ZWQg4oCTIGl0J3Mgbm90LiBJIGNvbnNpZGVyZWQgb3RoZXIgZmx1c2ggZnVuY3Rpb25zIGxpa2UgYGxpc3Rfc2V0X2ZsdXNoYCBhbmQgYG10eXBlX2ZsdXNoYCwgYnV0IHRoZXkncmUgYWxzbyBzdGF0aWMuIFNpbmNlIGBpcF9zZXRfZmx1c2hgIGlzIGRpcmVjdGx5IHJlbGV2YW50LCBJJ20gZ29pbmcgdG8gZm9jdXMgb24gaXQuIEFuZCwgc2luY2UgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBpcF9zZXRfYml0bWFwX2dlbi5oYCBhbmQgYGlwX3NldF9saXN0X3NldC5jYCwgSSdsbCBwcmlvcml0aXplIGluY2x1ZGluZyB0aGUgY29uZmlncyBhc3NvY2lhdGVkIHdpdGggdGhlc2UgbW9kdWxlcy5cblxuVGhlIGd1aWRhbmNlIHN1Z2dlc3RzIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cy4gQWx0aG91Z2ggYGlwX3NldF9mbHVzaGAgaXMgc3RhdGljLCBiZWNhdXNlIGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgY2FuJ3QgYmUgaW5saW5lZCwgc28gaXQgd2lsbCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQgbWFrZXMgaXQgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiBmb3IgZnV6emluZy4gQWxzbywgYWx0aG91Z2ggYG10eXBlX2ZsdXNoYCBpcyB1c2VkIGluIHRoZSBgaXBfc2V0X2hhc2hfZ2VuLmhgIGFuZCB0aGUgcGF0Y2ggdG91Y2hlcyB0aGF0IGhlYWRlciwgdGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYGlwX3NldF9iaXRtYXBfZ2VuLmhgIGFuZCBgaXBfc2V0X2xpc3Rfc2V0LmNgLCBzbyBgSVBfU0VUX0hBU0hfKmAgY29uZmlncyBhcmUgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgdGhpcyBzcGVjaWZpYyBwYXRjaC5cblxuSSd2ZSBkZXRlcm1pbmVkIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmbHVzaCBvcGVyYXRpb25zIGZvciBiaXRtYXAgYW5kIGxpc3QgSVAgc2V0cy4gSXQgcmVtb3ZlcyByZWR1bmRhbnQgYXNzaWdubWVudHMgdGhhdCByZXNldCB0aGUgZWxlbWVudCBjb3VudCBhbmQgZXh0ZW5zaW9uIHNpemUgdG8gemVybywgYW5kIGl0IHJlcGxhY2VzIHRoZW0gd2l0aCBhIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFYCBhc3NlcnRpb24gdG8gY2hlY2sgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFscmVhZHkgemVyby4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIHRoZXJlIGlzIGEgYnVnIHdoZXJlIGVsZW1lbnRzIGFyZSBub3QgY29ycmVjdGx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy5cblxuVGhlcmVmb3JlLCBmb3IgbXkgZnV6emluZyBjb25maWd1cmF0aW9uLCBJJ2xsIG5lZWQ6XG5cbkNvbmZpZ3M6XG4qICAgYElORVRgXG4qICAgYE5FVEZJTFRFUmBcbiogICBgSVBfU0VUYFxuKiAgIGBJUF9TRVRfQklUTUFQX0lQYFxuKiAgIGBJUF9TRVRfQklUTUFQX0lQTUFDYFxuKiAgIGBJUF9TRVRfQklUTUFQX1BPUlRgXG4qICAgYElQX1NFVF9MSVNUX1NFVGBcblxuRm9jdXMgU3ltYm9sOlxuKiAgIGBpcF9zZXRfZmx1c2hgXG5cbkknbSBjb25maWRlbnQgdGhhdCBgaXBfc2V0X2ZsdXNoYCBpcyB0aGUgY29ycmVjdCBzeW1ib2wgdG8gdGFyZ2V0IGZvciBmb2N1c2VkIGZ1enppbmcgaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU2MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyNzo0OS4xOTEzNDg4NTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzY0NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3NldF9mbHVzaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTEzMDI9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMwMzppcF9zZXRfZmx1c2hfc2V0KHN0cnVjdCBpcF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMwNC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMxMS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMxMjpzdGF0aWMgaW50IGlwX3NldF9mbHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZubF9pbmZvICppbmZvLFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzEzLVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBubGF0dHIgKiBjb25zdCBhdHRyW10pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMTMyNS1cXHRcXHRcXHRpZiAocylcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmM6MTMyNjpcXHRcXHRcXHRcXHRpcF9zZXRfZmx1c2hfc2V0KHMpO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzI3LVxcdFxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0xMzMyLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYzoxMzMzOlxcdFxcdGlwX3NldF9mbHVzaF9zZXQocyk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jLTEzMzQtXFx0fVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jPTIxNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2NhbGxiYWNrIGlwX3NldF9uZXRsaW5rX3N1YnN5c19jYltJUFNFVF9NU0dfTUFYXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYy0yMTY1LVxcdFtJUFNFVF9DTURfRkxVU0hdXFx0PSB7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jOjIxNjY6XFx0XFx0LmNhbGxcXHRcXHQ9IGlwX3NldF9mbHVzaCxcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMtMjE2Ny1cXHRcXHQudHlwZVxcdFxcdD0gTkZOTF9DQl9NVVRFWCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjc6NDkuMjM1MTE3NDEzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1MTA5NjQ4MDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVAgU2V0IEZsdXNoaW5nIE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSBgaXBfc2V0X2ZsdXNoYCBpcyB0aGUgbWFpbiBzeW1ib2wgdG8gZm9jdXMgb24gaGVyZS4gQnV0IGhvbGQgb24gYSBzZWNvbmTigKYgSSBuZWVkIHRvIGJlIHByZWNpc2UuIEl0IHNlZW1zIHRoZSBhY3R1YWwgZnVuY3Rpb25zIGRpcmVjdGx5IG1vZGlmaWVkIGFyZSBgbGlzdF9zZXRfZmx1c2hgIGFuZCBgbXR5cGVfZmx1c2hgLiBBaGEhIE5vdyBJIHJlbWVtYmVyOyBgbXR5cGVfZmx1c2hgIGlzIGEgbWFjcm8gb3IgdGVtcGxhdGUuIFRoYXQgbWVhbnMgaXQgbGlrZWx5IGV4cGFuZHMgdG8gZGlmZmVyZW50IGZ1bmN0aW9ucyBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlcyBpbnZvbHZlZC4gSW4gdGhpcyBjYXNlLCB0aGF0IGV4cGFuc2lvbiBsb29rcyBsaWtlIGl0IHJlc3VsdHMgaW4gYGJpdG1hcF9pcF9mbHVzaGAsIGBiaXRtYXBfaXBtYWNfZmx1c2hgLCBhbmQgYGJpdG1hcF9wb3J0X2ZsdXNoYC4gTm93LCBteSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlc2UgZ2VuZXJhdGVkIHN5bWJvbHMsIHRoZXNlIGRlcml2ZWQgZnVuY3Rpb25zLCBhY3R1YWxseSBleGlzdCBpbiB0aGUgY29tcGlsZWQgY29kZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBzY29wZSBvZiB0aGUgY2hhbmdlLiBMZXQgbWUgcXVpY2tseSBjb25maXJtIHRoZWlyIGV4aXN0ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzODgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyODoxNC4zNDQ3NjgzMjlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTE0NDE5MzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJpdG1hcF9pcF9mbHVzaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MTYuMzk2MjE2Mjk4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDU2MDU1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIHRoZSBgbXR5cGVfZmx1c2hgIERlZmluaXRpb24qKlxuXG5IbW0sIGxldCdzIHNlZS4uLiBgbXR5cGVfZmx1c2hgLiBSaWdodCwgaXQncyBkZWZpbmVkIGFzIGBJUFNFVF9UT0tFTihNVFlQRSwgX2ZsdXNoKWAuIE9rYXksIHNvIGl0J3MgYSBtYWNybywgbm90IGEgZGlyZWN0IHZhcmlhYmxlIG9yIGZ1bmN0aW9uLiBOb3csIHdoYXQgZG9lcyBgSVBTRVRfVE9LRU5gIGFjdHVhbGx5ICpkbyo/IEkgbmVlZCB0byBjaGVjayBpdHMgZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIHdoYXQgYG10eXBlX2ZsdXNoYCByZWFsbHkgcmVwcmVzZW50cy4gVGhpcyBpcyBjcnVjaWFsIGZvciB0cmFjaW5nIHRoZSBjb2RlIGFuZCBlbnN1cmluZyBJJ20gbm90IG1pc3NpbmcgYW55IHVuZGVybHlpbmcgaW1wbGljYXRpb25zIG9yIHBvdGVudGlhbCBwaXRmYWxscyBpbiBob3cgdGhpcyBpcyBpbXBsZW1lbnRlZC4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBtYWNybyBkZWZpbml0aW9uIGl0c2VsZi4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODY4NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjIwLjgwMTgyMzYyNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3NTExMDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIElQU0VUX1RPS0VOXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oPTUyMz1uZl9pbmV0X2FkZHJfbWFza19pbnBsYWNlKHVuaW9uIG5mX2luZXRfYWRkciAqYTEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC01NDAtI2RlZmluZSBJUFNFVF9DT05DQVQoYSwgYilcXHRcXHRhIyNiXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0Lmg6NTQxOiNkZWZpbmUgSVBTRVRfVE9LRU4oYSwgYilcXHRcXHRJUFNFVF9DT05DQVQoYSwgYilcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaC01NDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjIzLjE3NjkzOTM1NVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ1Njc1Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBNYWNyby1HZW5lcmF0ZWQgU3ltYm9scyoqXG5cbk9rYXksIHNvIGBJUFNFVF9UT0tFTihiaXRtYXBfaXAsIF9mbHVzaClgIGV4cGFuZHMgdG8gYGJpdG1hcF9pcF9mbHVzaGAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gSSB3YXMgcHV6emxlZCB3aHkgYGdpdCBncmVwYCB3YXNuJ3QgZmluZGluZyBgYml0bWFwX2lwX2ZsdXNoYC4gT2YgY291cnNlLCBpdCdzIG1hY3JvLWdlbmVyYXRlZCEgVGhlIHNvdXJjZSBjb2RlIGRvZXNuJ3QgbGl0ZXJhbGx5IGNvbnRhaW4gdGhlIHN0cmluZyBcImJpdG1hcF9pcF9mbHVzaFwiOyB0aGUgY29tcGlsZXIgKmNyZWF0ZXMqIHRoYXQgc3ltYm9sLlxuXG5SaWdodCwgc28gdG8gdHJhY2UgdGhpcyB0aHJvdWdoLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgZ2VuZXJhdGVkIHN5bWJvbHMuIEknbGwgYWRkIGBiaXRtYXBfaXBfZmx1c2hgLCBgYml0bWFwX2lwbWFjX2ZsdXNoYCwgYGJpdG1hcF9wb3J0X2ZsdXNoYCwgYW5kIGBsaXN0X3NldF9mbHVzaGAgdG8gbXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzLiBMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB0aGF0IGBsaXN0X3NldF9mbHVzaGAgaXMgYWxzbyBjb3JyZWN0bHkgZ2VuZXJhdGVkIGFuZCBiZWhhdmluZyBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwMzksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MjcuMzIyNjE4MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzE5NjI1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGlzdF9zZXRfZmx1c2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz00MTU9c3RhdGljIHZvaWRcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jOjQxNjpsaXN0X3NldF9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy00MTcte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NDM9bGlzdF9zZXRfY2FuY2VsX2djKHN0cnVjdCBpcF9zZXQgKnNldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMtNTUwLVxcdC8qIEZsdXNoIGxpc3QgdG8gZHJvcCByZWZlcmVuY2VzIHRvIG90aGVyIGlwc2V0cyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTUxOlxcdGxpc3Rfc2V0X2ZsdXNoKHNldCk7XFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NTItfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYz01NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpcF9zZXRfdHlwZV92YXJpYW50IHNldF92YXJpYW50ID0ge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NjItXFx0LmRlc3Ryb3kgPSBsaXN0X3NldF9kZXN0cm95LFxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmM6NTYzOlxcdC5mbHVzaFxcdD0gbGlzdF9zZXRfZmx1c2gsXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYy01NjQtXFx0LmhlYWRcXHQ9IGxpc3Rfc2V0X2hlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI4OjI5LjU5NDU4NTY3MloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA0OTY4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgUmVhc29uaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBsaXN0X3NldF9mbHVzaGAgaXMsIGluIGZhY3QsIHByZXNlbnQgaW4gdGhlIGNvZGViYXNlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSByZWxhdGVkIGZsdXNoIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIG15IHByaW1hcnkgZm9jdXMgZm9yIHRoaXMgbmV4dCBhbmFseXNpcy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gYWRkIHRoZXNlIHN5bWJvbHMgdG8gbXkgbWVudGFsIChhbmQgbm93IGFjdHVhbCkgbGlzdDogYGlwX3NldF9mbHVzaGAsIGBsaXN0X3NldF9mbHVzaGAsIGBiaXRtYXBfaXBfZmx1c2hgLCBgYml0bWFwX2lwbWFjX2ZsdXNoYCwgYW5kIGBiaXRtYXBfcG9ydF9mbHVzaGAuIE15IGxvZ2ljIGhlcmUgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNsZWFybHkgcGFydCBvZiB0aGUgcmVsYXRlZCBmbHVzaCBtZWNoYW5pc21zLlxuXG5Ob3csIGFzIGEgcmVtaW5kZXIgdG8gbXlzZWxmLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBrZWVwaW5nIHRyYWNrIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhpcyBzZXQgb2Ygb3BlcmF0aW9ucy4gSSdsbCBuZWVkIHRvIGtlZXAgaW4gbWluZDogYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGBJUF9TRVRfQklUTUFQX0lQYCwgYElQX1NFVF9CSVRNQVBfSVBNQUNgLCBgSVBfU0VUX0JJVE1BUF9QT1JUYCwgYW5kIGBJUF9TRVRfTElTVF9TRVRgLlxuXG5Ib2xkIG9uLCBJIHNlZSBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgdXNlZC4gU2luY2UgSSdtIGJlaW5nIHRob3JvdWdoLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoYXQgaGFzIGFueSBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCdzIGxvb2sgdGhhdCB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk3MTgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MzQuMzk5NTU3NTU4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjgzOTUzOTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRFQlVHX05FVF9XQVJOX09OX09OQ0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MDQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jPTk4Mj1zdGF0aWMgaW50IGd2ZV9yeF9jb21wbGV0ZV9yc2Moc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4X2Rxby5jLTEwMjYtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnhfZHFvLmM6MTAyNzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfZnJhZ19zaXplKGZyYWcpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeF9kcW8uYy0xMDI4LVxcdFxcdHNrYl9mcmFnX29mZl9hZGQoZnJhZywgaGRyX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWNzZWMuYz0xMDExPXN0YXRpYyBlbnVtIHJ4X2hhbmRsZXJfcmVzdWx0IGhhbmRsZV9ub3RfbWFjc2VjKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWNzZWMuYy0xMDQ4LVxcdFxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L21hY3NlYy5jOjEwNDk6XFx0XFx0XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghb3BzLVxcdTAwM2VyeF91c2VzX21kX2RzdCk7XFxuZHJpdmVycy9uZXQvbWFjc2VjLmMtMTA1MC1cXHRcXHRcXHRcXHRyeF9zYyA9IGZpbmRfcnhfc2MoXFx1MDAyNm1hY3NlYy1cXHUwMDNlc2VjeSxcXG4tLVxcbmRyaXZlcnMvbmV0L292cG4vY3J5cHRvX2FlYWQuYz01NT1zdGF0aWMgdW5zaWduZWQgaW50IG92cG5fYWVhZF9jcnlwdG9fdG1wX3NpemUoc3RydWN0IGNyeXB0b19hZWFkICp0Zm0sXFxuLS1cXG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmMtNTktXFxuZHJpdmVycy9uZXQvb3Zwbi9jcnlwdG9fYWVhZC5jOjYwOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoY3J5cHRvX2FlYWRfaXZzaXplKHRmbSkgIT0gT1ZQTl9OT05DRV9TSVpFKTtcXG5kcml2ZXJzL25ldC9vdnBuL2NyeXB0b19hZWFkLmMtNjEtXFxuLS1cXG5kcml2ZXJzL25ldC9vdnBuL2lvLmM9MzEyPXN0YXRpYyBib29sIG92cG5fZW5jcnlwdF9vbmUoc3RydWN0IG92cG5fcGVlciAqcGVlciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L292cG4vaW8uYy0zMjQtXFx0aWYgKHVubGlrZWx5KCFvdnBuX3BlZXJfaG9sZChwZWVyKSkpIHtcXG5kcml2ZXJzL25ldC9vdnBuL2lvLmM6MzI1OlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxuZHJpdmVycy9uZXQvb3Zwbi9pby5jLTMyNi1cXHRcXHRvdnBuX2NyeXB0b19rZXlfc2xvdF9wdXQoa3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvb3Zwbi90Y3AuYz01MTE9aW50IG92cG5fdGNwX3NvY2tldF9hdHRhY2goc3RydWN0IG92cG5fc29ja2V0ICpvdnBuX3NvY2ssXFxuLS1cXG5kcml2ZXJzL25ldC9vdnBuL3RjcC5jLTUzNy1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L292cG4vdGNwLmM6NTM4OlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxuZHJpdmVycy9uZXQvb3Zwbi90Y3AuYy01MzktXFx0XFx0Z290byBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjM1MD12b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjQ0MS1cXHRcXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNDQyOlxcdFxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI0NDMtXFx0XFx0XFx0Z290byBkcm9wO1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yNzEzPXN0cnVjdCBuZXRkZXZfcXVldWUgKm5ldGRldl9nZXRfdHhfcXVldWUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjcxNS17XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNzE2OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoaW5kZXggXFx1MDAzZT0gZGV2LVxcdTAwM2VudW1fdHhfcXVldWVzKTtcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI3MTctXFx0cmV0dXJuIFxcdTAwMjZkZXYtXFx1MDAzZV90eFtpbmRleF07XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTExNjg9c3RhdGljIGlubGluZSB2b2lkIHNrYl9kc3RfY2hlY2tfdW5zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTExNjkte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTE3MDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKChza2ItXFx1MDAzZV9za2JfcmVmZHN0IFxcdTAwMjYgU0tCX0RTVF9QVFJNQVNLKSBcXHUwMDI2XFx1MDAyNlxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTE3MS1cXHRcXHRcXHQgICAgICAgIShza2ItXFx1MDAzZV9za2JfcmVmZHN0IFxcdTAwMjYgU0tCX0RTVF9OT1JFRikpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0yNjkwPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHN0cnVjdCBza19idWZmICpza2IsIGludCBpLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yNjkzLXtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjI2OTQ6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShzaXplIFxcdTAwM2UgdHJ1ZXNpemUpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjY5NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MjgyNT1zdGF0aWMgaW5saW5lIHZvaWQgKl9fc2tiX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4MjYte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MjgyNzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGxlbiBcXHUwMDNlIElOVF9NQVgpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjgyOC1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4MjktXFx0c2tiLVxcdTAwM2VkYXRhIC09IGxlbjtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjI4MzA6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXFx1MDAzZWRhdGEgXFx1MDAzYyBza2ItXFx1MDAzZWhlYWQpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjgzMS1cXHRza2ItXFx1MDAzZWxlbiAgKz0gbGVuO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0yODM2PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCAqX19za2JfcHVsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMjgzNy17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoyODM4OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobGVuIFxcdTAwM2UgSU5UX01BWCk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODM5LVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0yODYyPXBza2JfbWF5X3B1bGxfcmVhc29uKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0yODYzLXtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjI4NjQ6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXFx1MDAzZSBJTlRfTUFYKTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTI4NjUtXFx0c2tiX21pZ2h0X3JlYWxsb2Moc2tiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MzAwMD1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3Jlc2V0X21hY19sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzAwMi1cXHRpZiAoIXNrYl9tYWNfaGVhZGVyX3dhc19zZXQoc2tiKSkge1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzAwMzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzAwNC1cXHRcXHRza2ItXFx1MDAzZW1hY19sZW4gPSAwO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDIxPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfaW5uZXJfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDI0LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzAyNTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG9mZnNldCAhPSAodHlwZW9mKHNrYi1cXHUwMDNlaW5uZXJfdHJhbnNwb3J0X2hlYWRlcikpb2Zmc2V0KTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwMjYtXFx0c2tiLVxcdTAwM2Vpbm5lcl90cmFuc3BvcnRfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDQxPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfaW5uZXJfbmV0d29ya19oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA0NC1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjMwNDU6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXFx1MDAzZWlubmVyX25ldHdvcmtfaGVhZGVyKSlvZmZzZXQpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA0Ni1cXHRza2ItXFx1MDAzZWlubmVyX25ldHdvcmtfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDY2PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfaW5uZXJfbWFjX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDY5LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA3MDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG9mZnNldCAhPSAodHlwZW9mKHNrYi1cXHUwMDNlaW5uZXJfbWFjX2hlYWRlcikpb2Zmc2V0KTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwNzEtXFx0c2tiLVxcdTAwM2Vpbm5lcl9tYWNfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDg1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX3RyYW5zcG9ydF9oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwODYte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA4NzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfdHJhbnNwb3J0X2hlYWRlcl93YXNfc2V0KHNrYikpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzA4OC1cXHRyZXR1cm4gc2tiLVxcdTAwM2VoZWFkICsgc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMDkxPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMDk0LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzA5NTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG9mZnNldCAhPSAodHlwZW9mKHNrYi1cXHUwMDNldHJhbnNwb3J0X2hlYWRlcikpb2Zmc2V0KTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMwOTYtXFx0c2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMTM0PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfbmV0d29ya19oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzEzNy1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjMxMzg6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShvZmZzZXQgIT0gKHR5cGVvZihza2ItXFx1MDAzZW5ldHdvcmtfaGVhZGVyKSlvZmZzZXQpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzEzOS1cXHRza2ItXFx1MDAzZW5ldHdvcmtfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMTQ4PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX21hY19oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMxNDkte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzE1MDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfbWFjX2hlYWRlcl93YXNfc2V0KHNrYikpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE1MS1cXHRyZXR1cm4gc2tiLVxcdTAwM2VoZWFkICsgc2tiLVxcdTAwM2VtYWNfaGVhZGVyO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMTU5PXN0YXRpYyBpbmxpbmUgdTMyIHNrYl9tYWNfaGVhZGVyX2xlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzE2MC17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDozMTYxOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNrYl9tYWNfaGVhZGVyX3dhc19zZXQoc2tiKSk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMTYyLVxcdHJldHVybiBza2ItXFx1MDAzZW5ldHdvcmtfaGVhZGVyIC0gc2tiLVxcdTAwM2VtYWNfaGVhZGVyO1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMTcwPXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcmVzZXRfbWFjX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0zMTczLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzE3NDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG9mZnNldCAhPSAodHlwZW9mKHNrYi1cXHUwMDNlbWFjX2hlYWRlcikpb2Zmc2V0KTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMxNzUtXFx0c2tiLVxcdTAwM2VtYWNfaGVhZGVyID0gb2Zmc2V0O1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0zMjQxPXN0YXRpYyBpbmxpbmUgdTMyIHNrYl9uZXR3b3JrX2hlYWRlcl9sZW4oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTMyNDIte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MzI0MzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfdHJhbnNwb3J0X2hlYWRlcl93YXNfc2V0KHNrYikpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMzI0NC1cXHRyZXR1cm4gc2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyIC0gc2tiLVxcdTAwM2VuZXR3b3JrX2hlYWRlcjtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NDY1OD1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3Bvc3RwdWxsX2RhdGFfbW92ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00NjYxLXtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjQ2NjI6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShsZW4gXFx1MDAzZSBJTlRfTUFYKTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQ2NjMtXFx0c2tiX2RhdGFfbW92ZShza2IsIGxlbiwgbik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTQ2NzQ9c3RhdGljIGlubGluZSB2b2lkIHNrYl9wb3N0cHVzaF9kYXRhX21vdmUoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtNDY3Ny17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDo0Njc4OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobGVuIFxcdTAwM2UgSU5UX01BWCk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00Njc5LVxcdHNrYl9kYXRhX21vdmUoc2tiLCAtbGVuLCBuKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NTM0Mz1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX2NoZWNrc3VtX25vbmVfYXNzZXJ0KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC01MzQ0LXtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjUzNDU6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXFx1MDAzZWlwX3N1bW1lZCAhPSBDSEVDS1NVTV9OT05FKTtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTUzNDYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fdnNvY2suaD01MD1zdGF0aWMgaW5saW5lIHZvaWQgdmlydGlvX3Zzb2NrX3NrYl9wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxlbilcXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb192c29jay5oLTUxLXtcXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb192c29jay5oOjUyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVxcdTAwM2VsZW4pO1xcbmluY2x1ZGUvbGludXgvdmlydGlvX3Zzb2NrLmgtNTMtXFxuLS1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmg9MzQwPXN0YXRpYyBpbmxpbmUgdm9pZCBmaWI2X2luZm9fcmVsZWFzZShzdHJ1Y3QgZmliNl9pbmZvICpmNmkpXFxuLS1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMzQyLVxcdGlmIChmNmkgXFx1MDAyNlxcdTAwMjYgcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZmNmktXFx1MDAzZWZpYjZfcmVmKSkge1xcbmluY2x1ZGUvbmV0L2lwNl9maWIuaDozNDM6XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaGxpc3RfdW5oYXNoZWQoXFx1MDAyNmY2aS1cXHUwMDNlZ2NfbGluaykpO1xcbmluY2x1ZGUvbmV0L2lwNl9maWIuaC0zNDQtXFx0XFx0Y2FsbF9yY3VfaHVycnkoXFx1MDAyNmY2aS1cXHUwMDNlcmN1LCBmaWI2X2luZm9fZGVzdHJveV9yY3UpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmg9MTE0PWRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaC0xNTEtI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX05FVClcXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaDoxNTI6I2RlZmluZSBERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNvbmQpICgodm9pZClXQVJOX09OX09OQ0UoY29uZCkpXFxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmgtMTUzLSNkZWZpbmUgREVCVUdfTkVUX1dBUk5fT05DRShjb25kLCBmb3JtYXQuLi4pICgodm9pZClXQVJOX09OQ0UoY29uZCwgZm9ybWF0KSlcXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaC0xNTQtI2Vsc2VcXG5pbmNsdWRlL25ldC9uZXRfZGVidWcuaDoxNTU6I2RlZmluZSBERUJVR19ORVRfV0FSTl9PTl9PTkNFKGNvbmQpIEJVSUxEX0JVR19PTl9JTlZBTElEKGNvbmQpXFxuaW5jbHVkZS9uZXQvbmV0X2RlYnVnLmgtMTU2LSNkZWZpbmUgREVCVUdfTkVUX1dBUk5fT05DRShjb25kLCBmb3JtYXQuLi4pIEJVSUxEX0JVR19PTl9JTlZBTElEKGNvbmQpXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRsaW5rLmg9MjI2MT1zdGF0aWMgaW5saW5lIGludCBubGFfbmVzdF9lbmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sYXR0ciAqc3RhcnQpXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRsaW5rLmgtMjI2NC1cXG5pbmNsdWRlL25ldC9uZXRsaW5rLmg6MjI2NTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGRpZmYgXFx1MDAzZSBVMTZfTUFYKTtcXG5pbmNsdWRlL25ldC9uZXRsaW5rLmgtMjI2Ni1cXHRzdGFydC1cXHUwMDNlbmxhX2xlbiA9IGRpZmY7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRtZW0uaD0xNzE9c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2lvdiAqbmV0bWVtX3RvX25ldF9pb3YobmV0bWVtX3JlZiBuZXRtZW0pXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRtZW0uaC0xNzYtXFxuaW5jbHVkZS9uZXQvbmV0bWVtLmg6MTc3OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UodHJ1ZSk7XFxuaW5jbHVkZS9uZXQvbmV0bWVtLmgtMTc4LVxcdHJldHVybiBOVUxMO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bWVtLmg9MjEyPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBuZXRtZW1fcGZuX3RyYWNlKG5ldG1lbV9yZWYgbmV0bWVtKVxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bWVtLmgtMjMyLSh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbmV0L25ldG1lbS5oOjIzMzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFwYWdlX3Bvb2xfcGFnZV9pc19wcChwKSk7XFx0XFx0XFxcXFxcbmluY2x1ZGUvbmV0L25ldG1lbS5oLTIzNC1cXHRfX3BwX3BhZ2VfdG9fbm1kZXNjKHApO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbmV0L3JlcXVlc3Rfc29jay5oPTEyOD1zdGF0aWMgaW5saW5lIHZvaWQgcmVxc2tfZnJlZShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuaW5jbHVkZS9uZXQvcmVxdWVzdF9zb2NrLmgtMTI5LXtcXG5pbmNsdWRlL25ldC9yZXF1ZXN0X3NvY2suaDoxMzA6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShyZWZjb3VudF9yZWFkKFxcdTAwMjZyZXEtXFx1MDAzZXJza19yZWZjbnQpICE9IDApO1xcbmluY2x1ZGUvbmV0L3JlcXVlc3Rfc29jay5oLTEzMS1cXHRfX3JlcXNrX2ZyZWUocmVxKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg9OTA4PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHFkaXNjX3BrdF9zZWdzKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oLTkxMS1cXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oOjkxMjpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHBrdF9zZWdzICE9XFxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC05MTMtXFx0XFx0XFx0KHNrYl9pc19nc28oc2tiKSA/IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZ3NvX3NlZ3MgOiAxKSk7XFxuLS1cXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oPTEyMjY9c3RhdGljIGlubGluZSB2b2lkIHFkaXNjX2RlcXVldWVfZHJvcChzdHJ1Y3QgUWRpc2MgKnEsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oLTEyMzAtXFxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaDoxMjMxOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIShxLVxcdTAwM2VmbGFncyBcXHUwMDI2IFRDUV9GX0RFUVVFVUVfRFJPUFMpKTtcXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oOjEyMzI6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShxLVxcdTAwM2VmbGFncyBcXHUwMDI2IFRDUV9GX05PTE9DSyk7XFxuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC0xMjMzLVxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTE4MjE9c3RhdGljIGlubGluZSB2b2lkIHNvY2tfcmVsZWFzZV9vd25lcnNoaXAoc3RydWN0IHNvY2sgKnNrKVxcbmluY2x1ZGUvbmV0L3NvY2suaC0xODIyLXtcXG5pbmNsdWRlL25ldC9zb2NrLmg6MTgyMzpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFzb2NrX293bmVkX2J5X3VzZXJfbm9jaGVjayhzaykpO1xcbmluY2x1ZGUvbmV0L3NvY2suaC0xODI0LVxcdHNrLVxcdTAwM2Vza19sb2NrLm93bmVkID0gMDtcXG4tLVxcbmluY2x1ZGUvbmV0L3NvY2suaD0yNzk2PXN0YXRpYyBpbmxpbmUgaW50IHNrX2Ryb3BzX3JlYWQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oLTI4MDAtXFx0aWYgKG5kYykge1xcbmluY2x1ZGUvbmV0L3NvY2suaDoyODAxOlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoYXRvbWljX3JlYWQoXFx1MDAyNnNrLVxcdTAwM2Vza19kcm9wcykpO1xcbmluY2x1ZGUvbmV0L3NvY2suaC0yODAyLVxcdFxcdHJldHVybiBudW1hX2Ryb3BfcmVhZChuZGMpO1xcbi0tXFxuaW5jbHVkZS9uZXQvdGNwLmg9ODAzPXN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfYWRkX3JlY2VpdmVfcXVldWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbmV0L3RjcC5oLTgwNC17XFxuaW5jbHVkZS9uZXQvdGNwLmg6ODA1OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2RzdChza2IpKTtcXG5pbmNsdWRlL25ldC90Y3AuaDo4MDY6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShzZWNwYXRoX2V4aXN0cyhza2IpKTtcXG5pbmNsdWRlL25ldC90Y3AuaC04MDctXFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2c2stXFx1MDAzZXNrX3JlY2VpdmVfcXVldWUsIHNrYik7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz0zNTEwPXN0YXRpYyB1MTYgc2tiX3R4X2hhc2goY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTM1MzEtXFx0aWYgKHNrYl9yeF9xdWV1ZV9yZWNvcmRlZChza2IpKSB7XFxubmV0L2NvcmUvZGV2LmM6MzUzMjpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHFjb3VudCA9PSAwKTtcXG5uZXQvY29yZS9kZXYuYy0zNTMzLVxcdFxcdGhhc2ggPSBza2JfZ2V0X3J4X3F1ZXVlKHNrYik7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz00MTg1PXN0YXRpYyBpbmxpbmUgaW50IF9fZGV2X3htaXRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTQyNzYtXFxubmV0L2NvcmUvZGV2LmM6NDI3NzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYiAhPSBsbGlzdF9lbnRyeShsbF9saXN0LFxcbm5ldC9jb3JlL2Rldi5jLTQyNzgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZixcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTQzNDE9aW50IGRldl9sb29wYmFja194bWl0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNDM0Ny1cXHRcXHRza2ItXFx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZO1xcbm5ldC9jb3JlL2Rldi5jOjQzNDg6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX2RzdChza2IpKTtcXG5uZXQvY29yZS9kZXYuYy00MzQ5LVxcdHNrYl9kc3RfZm9yY2Uoc2tiKTtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTQ5NjU9c3RhdGljIGlubGluZSB2b2lkIF9fX19uYXBpX3NjaGVkdWxlKHN0cnVjdCBzb2Z0bmV0X2RhdGEgKnNkLFxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNDk5MC11c2VfbG9jYWxfbmFwaTpcXG5uZXQvY29yZS9kZXYuYzo0OTkxOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXFx1MDAyNm5hcGktXFx1MDAzZXBvbGxfbGlzdCkpO1xcbm5ldC9jb3JlL2Rldi5jLTQ5OTItXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2bmFwaS1cXHUwMDNlcG9sbF9saXN0LCBcXHUwMDI2c2QtXFx1MDAzZXBvbGxfbGlzdCk7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMDgwMz1zdGF0aWMgaW50IGRldl9pbmRleF9yZXNlcnZlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlmaW5kZXgpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMDgwNy1cXHRpZiAoaWZpbmRleCBcXHUwMDNlIElOVF9NQVgpIHtcXG5uZXQvY29yZS9kZXYuYzoxMDgwODpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbm5ldC9jb3JlL2Rldi5jLTEwODA5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2NvcmUvZHN0X2NhY2hlLmM9Mjg9c3RhdGljIHZvaWQgZHN0X2NhY2hlX3Blcl9jcHVfZHN0X3NldChzdHJ1Y3QgZHN0X2NhY2hlX3BjcHUgKmRzdF9jYWNoZSxcXG4tLVxcbm5ldC9jb3JlL2RzdF9jYWNoZS5jLTMwLXtcXG5uZXQvY29yZS9kc3RfY2FjaGUuYzozMTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFpbl9zb2Z0aXJxKCkpO1xcbm5ldC9jb3JlL2RzdF9jYWNoZS5jLTMyLVxcdGRzdF9yZWxlYXNlKGRzdF9jYWNoZS1cXHUwMDNlZHN0KTtcXG4tLVxcbm5ldC9jb3JlL2RzdF9jYWNoZS5jPTQwPXN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGVfcGVyX2NwdV9nZXQoc3RydWN0IGRzdF9jYWNoZSAqZHN0X2NhY2hlLFxcbi0tXFxubmV0L2NvcmUvZHN0X2NhY2hlLmMtNDQtXFxubmV0L2NvcmUvZHN0X2NhY2hlLmM6NDU6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaW5fc29mdGlycSgpKTtcXG5uZXQvY29yZS9kc3RfY2FjaGUuYy00Ni1cXHRkc3QgPSBpZHN0LVxcdTAwM2Vkc3Q7XFxuLS1cXG5uZXQvY29yZS9mbG93X2Rpc3NlY3Rvci5jPTEwNTc9Ym9vbCBfX3NrYl9mbG93X2Rpc3NlY3QoY29uc3Qgc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L2NvcmUvZmxvd19kaXNzZWN0b3IuYy0xMTMwLVxcbm5ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmM6MTEzMTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFuZXQpO1xcbm5ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmMtMTEzMi1cXHRpZiAobmV0KSB7XFxuLS1cXG5uZXQvY29yZS9ncm8uYz00Mjg9c3RhdGljIHZvaWQgZ3JvX3B1bGxfZnJvbV9mcmFnMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZ3JvdylcXG4tLVxcbm5ldC9jb3JlL2dyby5jLTQzMS1cXG5uZXQvY29yZS9ncm8uYzo0MzI6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXFx1MDAzZWVuZCAtIHNrYi1cXHUwMDNldGFpbCBcXHUwMDNjIGdyb3cpO1xcbm5ldC9jb3JlL2dyby5jLTQzMy1cXG4tLVxcbm5ldC9jb3JlL2x3dHVubmVsLmM9NDMxPWludCBsd3R1bm5lbF9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvbHd0dW5uZWwuYy00MzctXFxubmV0L2NvcmUvbHd0dW5uZWwuYzo0Mzg6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSghaW5fc29mdGlycSgpKTtcXG5uZXQvY29yZS9sd3R1bm5lbC5jLTQzOS1cXG4tLVxcbm5ldC9jb3JlL25laWdoYm91ci5jPTYzPXN0YXRpYyBzdHJ1Y3QgaGxpc3RfaGVhZCAqbmVpZ2hfZ2V0X2Rldl90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgZmFtaWx5KVxcbi0tXFxubmV0L2NvcmUvbmVpZ2hib3VyLmMtNjgtXFx0ZGVmYXVsdDpcXG5uZXQvY29yZS9uZWlnaGJvdXIuYzo2OTpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbm5ldC9jb3JlL25laWdoYm91ci5jLTcwLVxcdFxcdGZhbGx0aHJvdWdoOyAvKiB0byBhdm9pZCBwYW5pYyBieSBudWxsLXB0ci1kZXJlZiAqL1xcbi0tXFxubmV0L2NvcmUvbmVpZ2hib3VyLmM9NDYxPXN0YXRpYyBpbnQgX19uZWlnaF9pZmRvd24oc3RydWN0IG5laWdoX3RhYmxlICp0YmwsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZWlnaGJvdXIuYy00NjctXFx0fSBlbHNlIHtcXG5uZXQvY29yZS9uZWlnaGJvdXIuYzo0Njg6XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2lwX3Blcm0pO1xcbm5ldC9jb3JlL25laWdoYm91ci5jLTQ2OS1cXHRcXHRuZWlnaF9mbHVzaF90YWJsZSh0YmwpO1xcbi0tXFxubmV0L2NvcmUvbmV0cG9sbC5jPTU0Nz1pbnQgbmV0cG9sbF9zZXR1cChzdHJ1Y3QgbmV0cG9sbCAqbnApXFxuLS1cXG5uZXQvY29yZS9uZXRwb2xsLmMtNjE5LXB1dDpcXG5uZXQvY29yZS9uZXRwb2xsLmM6NjIwOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobnAtXFx1MDAzZWRldik7XFxubmV0L2NvcmUvbmV0cG9sbC5jLTYyMS1cXHRpZiAoaXBfb3ZlcndyaXR0ZW4pXFxuLS1cXG5uZXQvY29yZS9ydG5ldGxpbmsuYz0zMTc9c3RhdGljIHZvaWQgcnRubF9uZXRzX2FkZChzdHJ1Y3QgcnRubF9uZXRzICpydG5sX25ldHMsIHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9jb3JlL3J0bmV0bGluay5jLTMyMC1cXG5uZXQvY29yZS9ydG5ldGxpbmsuYzozMjE6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShydG5sX25ldHMtXFx1MDAzZWxlbiA9PSBBUlJBWV9TSVpFKHJ0bmxfbmV0cy1cXHUwMDNlbmV0KSk7XFxubmV0L2NvcmUvcnRuZXRsaW5rLmMtMzIyLVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9Njc0PXN0cnVjdCBza19idWZmICpfX2FsbG9jX3NrYih1bnNpZ25lZCBpbnQgc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy03MzMtXFx0XFx0QlVJTERfQlVHX09OKFNLQl9GQ0xPTkVfVU5BVkFJTEFCTEUgIT0gMCk7XFxubmV0L2NvcmUvc2tidWZmLmM6NzM0OlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVxcdTAwM2VmY2xvbmUgIT0gU0tCX0ZDTE9ORV9VTkFWQUlMQUJMRSk7XFxubmV0L2NvcmUvc2tidWZmLmMtNzM1LVxcdFxcdHNrYi1cXHUwMDNlZmNsb25lIHw9IFNLQl9GQ0xPTkVfT1JJRztcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTgzOD1zdHJ1Y3Qgc2tfYnVmZiAqbmFwaV9hbGxvY19za2Ioc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCB1bnNpZ25lZCBpbnQgbGVuKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtODQ1LVxcbm5ldC9jb3JlL3NrYnVmZi5jOjg0NjpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFpbl9zb2Z0aXJxKCkpO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTg0Ny1cXHRsZW4gKz0gTkVUX1NLQl9QQUQgKyBORVRfSVBfQUxJR047XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz04OTc9dm9pZCBza2JfY29hbGVzY2VfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaSwgaW50IHNpemUsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy05MDEtXFxubmV0L2NvcmUvc2tidWZmLmM6OTAyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2l6ZSBcXHUwMDNlIHRydWVzaXplKTtcXG5uZXQvY29yZS9za2J1ZmYuYy05MDMtXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xMTY5PXZvaWQgc2tiX3JlbGVhc2VfaGVhZF9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTE3Mi1cXHRpZiAoc2tiLVxcdTAwM2VkZXN0cnVjdG9yKSB7XFxubmV0L2NvcmUvc2tidWZmLmM6MTE3MzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKGluX2hhcmRpcnEoKSk7XFxubmV0L2NvcmUvc2tidWZmLmMtMTE3NC0jaWZkZWYgQ09ORklHX0lORVRcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTEyMTc9Ym9vbCBfX3NrX3NrYl9yZWFzb25fZHJvcChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0xMjIyLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjEyMjM6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShyZWFzb24gPT0gU0tCX05PVF9EUk9QUEVEX1lFVCB8fFxcbm5ldC9jb3JlL3NrYnVmZi5jLTEyMjQtXFx0XFx0XFx0ICAgICAgIHUzMl9nZXRfYml0cyhyZWFzb24sXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xNTE5PXZvaWQgbmFwaV9jb25zdW1lX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYnVkZ2V0KVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTUyNS1cXG5uZXQvY29yZS9za2J1ZmYuYzoxNTI2OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIWluX3NvZnRpcnEoKSk7XFxubmV0L2NvcmUvc2tidWZmLmMtMTUyNy1cXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTQyNzQ9aW50IHNrYl9zaGlmdChzdHJ1Y3Qgc2tfYnVmZiAqdGd0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgc2hpZnRsZW4pXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy00Mjg1LVxcbm5ldC9jb3JlL3NrYnVmZi5jOjQyODY6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSh0Z3QtXFx1MDAzZXBwX3JlY3ljbGUgIT0gc2tiLVxcdTAwM2VwcF9yZWN5Y2xlKTtcXG5uZXQvY29yZS9za2J1ZmYuYzo0Mjg3OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2NtcF9kZWNyeXB0ZWQodGd0LCBza2IpKTtcXG5uZXQvY29yZS9za2J1ZmYuYy00Mjg4LVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9NDY3ND1zdHJ1Y3Qgc2tfYnVmZiAqc2tiX3NlZ21lbnRfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtNDY4NS1cXHQvKiBPbmx5IHNrYl9ncm9fcmVjZWl2ZV9saXN0IGdlbmVyYXRlZCBza2JzIGFycml2ZSBoZXJlICovXFxubmV0L2NvcmUvc2tidWZmLmM6NDY4NjpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCEoc2tiX3NoaW5mbyhza2IpLVxcdTAwM2Vnc29fdHlwZSBcXHUwMDI2IFNLQl9HU09fRlJBR0xJU1QpKTtcXG5uZXQvY29yZS9za2J1ZmYuYy00Njg3LVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtNDcwMC1cXG5uZXQvY29yZS9za2J1ZmYuYzo0NzAxOlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobnNrYi1cXHUwMDNlc2spO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTQ3MDItXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz03MzI1PW5vZGVmZXI6XFx0a2ZyZWVfc2tiX25hcGlfY2FjaGUoc2tiKTtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTczMjgtXFxubmV0L2NvcmUvc2tidWZmLmM6NzMyOTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9kc3Qoc2tiKSk7XFxubmV0L2NvcmUvc2tidWZmLmM6NzMzMDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYi1cXHUwMDNlZGVzdHJ1Y3Rvcik7XFxubmV0L2NvcmUvc2tidWZmLmM6NzMzMTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHNrYl9uZmN0KHNrYikpO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTczMzItXFxuLS1cXG5uZXQvY29yZS9zb2NrLmM9MjQ4MD1zdHJ1Y3Qgc29jayAqc2tfY2xvbmUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBnZnBfdCBwcmlvcml0eSxcXG4tLVxcbm5ldC9jb3JlL3NvY2suYy0yNTM0LVxcdG5ld3NrLVxcdTAwM2Vza19yZXNlcnZlZF9tZW0gID0gMDtcXG5uZXQvY29yZS9zb2NrLmM6MjUzNTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5ld3NrLVxcdTAwM2Vza19kcm9wX2NvdW50ZXJzKTtcXG5uZXQvY29yZS9zb2NrLmMtMjUzNi1cXHRza19kcm9wc19yZXNldChuZXdzayk7XFxuLS1cXG5uZXQvY29yZS9zb2NrLmM9MzI0ND12b2lkIF9fcmVsZWFzZV9zb2NrKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9jb3JlL3NvY2suYy0zMjU4LVxcdFxcdFxcdHByZWZldGNoKG5leHQpO1xcbm5ldC9jb3JlL3NvY2suYzozMjU5OlxcdFxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2RzdF9pc19ub3JlZihza2IpKTtcXG5uZXQvY29yZS9zb2NrLmMtMzI2MC1cXHRcXHRcXHRza2JfbWFya19ub3Rfb25fbGlzdChza2IpO1xcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5oPTEyOT1zdGF0aWMgaW5saW5lIHZvaWQgZXRobmxfdXBkYXRlX3U4X3UzMih1OCAqZHN0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5oLTEzNi1cXHR2YWwgPSBubGFfZ2V0X3UzMihhdHRyKTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmg6MTM3OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UodmFsIFxcdTAwM2UgVThfTUFYKTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmgtMTM4LVxcdGlmICgqZHN0ID09IHZhbClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz00NzU9aW50IGlwX2ZpYl9jaGVja19kZWZhdWx0KF9fYmUzMiBndywgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy00ODItXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG5oLCBoZWFkLCBuaF9oYXNoKSB7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjQ4MzpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5oLVxcdTAwM2VmaWJfbmhfZGV2ICE9IGRldik7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTQ4NC1cXHRcXHRpZiAobmgtXFx1MDAzZWZpYl9uaF9ndzQgPT0gZ3cgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xOTM2PXZvaWQgZmliX3N5bmNfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBvcmlnX210dSlcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTQxLVxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KG5oLCBoZWFkLCBuaF9oYXNoKSB7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5NDI6XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuaC1cXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTQzLVxcdFxcdGZpYl9uaGNfdXBkYXRlX210dShcXHUwMDI2bmgtXFx1MDAzZW5oX2NvbW1vbiwgZGV2LVxcdTAwM2VtdHUsIG9yaWdfbXR1KTtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xOTU1PWludCBmaWJfc3luY19kb3duX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50LCBib29sIGZvcmNlKVxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5NzAtXFx0XFx0QlVHX09OKCFmaS1cXHUwMDNlZmliX25ocyk7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5NzE6XFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuaC1cXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTcyLVxcdFxcdGlmIChmaSA9PSBwcmV2X2ZpKVxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jPTIxMDQ9aW50IGZpYl9zeW5jX3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgbmhfZmxhZ3MpXFxuLS1cXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMjEyOS1cXHRcXHRCVUdfT04oIWZpLVxcdTAwM2VmaWJfbmhzKTtcXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM6MjEzMDpcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKG5oLVxcdTAwM2VmaWJfbmhfZGV2ICE9IGRldik7XFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTIxMzEtXFx0XFx0aWYgKGZpID09IHByZXZfZmkpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2RpYWcuYz0yMDk9aW50IGluZXRfc2tfZGlhZ19maWxsKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrICppY3NrLFxcbi0tXFxubmV0L2lwdjQvaW5ldF9kaWFnLmMtMjI5LVxcdGhhbmRsZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGluZXRfZGlhZ190YWJsZVtwcm90b2NvbF0sIDEpO1xcbm5ldC9pcHY0L2luZXRfZGlhZy5jOjIzMDpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFoYW5kbGVyKTtcXG5uZXQvaXB2NC9pbmV0X2RpYWcuYy0yMzEtXFx0aWYgKCFoYW5kbGVyKVxcbi0tXFxubmV0L2lwdjQvdGNwX2RpYWcuYz0xOTI9c3RhdGljIGludCB0Y3BfdHdza19kaWFnX2ZpbGwoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwX2RpYWcuYy0yMDgtXFx0ciA9IG5sbXNnX2RhdGEobmxoKTtcXG5uZXQvaXB2NC90Y3BfZGlhZy5jOjIwOTpcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKHR3LVxcdTAwM2V0d19zdGF0ZSAhPSBUQ1BfVElNRV9XQUlUKTtcXG5uZXQvaXB2NC90Y3BfZGlhZy5jLTIxMC1cXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTMwODM9c3RhdGljIHZvaWQgdGNwX210dXBfcHJvYmVfc3VjY2VzcyhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0zMDkyLVxcdGRvX2Rpdih2YWwsIGljc2stXFx1MDAzZWljc2tfbXR1cC5wcm9iZV9zaXplKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzozMDkzOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoKHUzMil2YWwgIT0gdmFsKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy0zMDk0LVxcdHRjcF9zbmRfY3duZF9zZXQodHAsIG1heF90KHUzMiwgMVUsIHZhbCkpO1xcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jPTE4NDQ9aW50IHRjcF9mcmFnbWVudChzdHJ1Y3Qgc29jayAqc2ssIGVudW0gdGNwX3F1ZXVlIHRjcF9xdWV1ZSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0xODU3LVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoxODU4OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2hlYWRsZW4oc2tiKSk7XFxubmV0L2lwdjQvdGNwX291dHB1dC5jLTE4NTktXFxuLS1cXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MTkzOT1zdGF0aWMgaW50IF9fcHNrYl90cmltX2hlYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbilcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0xOTQzLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoxOTQ0OlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiX2hlYWRsZW4oc2tiKSk7XFxubmV0L2lwdjQvdGNwX291dHB1dC5jLTE5NDUtXFx0ZWF0ID0gbGVuO1xcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jPTI0MDA9c3RhdGljIGludCB0c29fZnJhZ21lbnQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuLFxcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jLTI0MDctXFx0LyogQWxsIG9mIGEgVFNPIGZyYW1lIG11c3QgYmUgY29tcG9zZWQgb2YgcGFnZWQgZGF0YS4gICovXFxubmV0L2lwdjQvdGNwX291dHB1dC5jOjI0MDg6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza2ItXFx1MDAzZWxlbiAhPSBza2ItXFx1MDAzZWRhdGFfbGVuKTtcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjQwOS1cXG4tLVxcbm5ldC9pcHY0L3VkcC5jPTI3NjA9ZW51bSBza2JfZHJvcF9yZWFzb24gdWRwX3Y0X2Vhcmx5X2RlbXV4KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC91ZHAuYy0yODAxLVxcdHNrYi1cXHUwMDNlc2sgPSBzaztcXG5uZXQvaXB2NC91ZHAuYzoyODAyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tfaXNfcmVmY291bnRlZChzaykpO1xcbm5ldC9pcHY0L3VkcC5jLTI4MDMtXFx0c2tiLVxcdTAwM2VkZXN0cnVjdG9yID0gc29ja19wZnJlZTtcXG4tLVxcbm5ldC9pcHY2L3VkcC5jPTEyMTI9dm9pZCB1ZHBfdjZfZWFybHlfZGVtdXgoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3VkcC5jLTEyMzgtXFx0c2tiLVxcdTAwM2VzayA9IHNrO1xcbm5ldC9pcHY2L3VkcC5jOjEyMzk6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShza19pc19yZWZjb3VudGVkKHNrKSk7XFxubmV0L2lwdjYvdWRwLmMtMTI0MC1cXHRza2ItXFx1MDAzZWRlc3RydWN0b3IgPSBzb2NrX3BmcmVlO1xcbi0tXFxubmV0L21wdGNwL2Zhc3RvcGVuLmM9OT12b2lkIG1wdGNwX2Zhc3RvcGVuX3N1YmZsb3dfc3luYWNrX3NldF9wYXJhbXMoc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcXG4tLVxcbm5ldC9tcHRjcC9mYXN0b3Blbi5jLTUzLVxcdG1wdGNwX2RhdGFfbG9jayhzayk7XFxubmV0L21wdGNwL2Zhc3RvcGVuLmM6NTQ6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShzb2NrX293bmVkX2J5X3VzZXJfbm9jaGVjayhzaykpO1xcbm5ldC9tcHRjcC9mYXN0b3Blbi5jLTU1LVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9NzEyPXN0YXRpYyBib29sIF9fbXB0Y3BfbW92ZV9za2JzX2Zyb21fc3ViZmxvdyhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNzY0LVxcdFxcdFxcdGlmICh1bmxpa2VseShtYXBfcmVtYWluaW5nIFxcdTAwM2MgbGVuKSkge1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjc2NTpcXHRcXHRcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTc2Ni1cXHRcXHRcXHRcXHRtcHRjcF9kc3NfY29ycnVwdGlvbihtc2ssIHNzayk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy03NjktXFx0XFx0XFx0aWYgKHVubGlrZWx5KCFmaW4pKSB7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6NzcwOlxcdFxcdFxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtNzcxLVxcdFxcdFxcdFxcdG1wdGNwX2Rzc19jb3JydXB0aW9uKG1zaywgc3NrKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTIyMzU9c3RhdGljIGJvb2wgbXB0Y3BfY2FuX3Nwb29sX2JhY2tsb2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbGlzdF9oZWFkICpza2JzKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjI0MS1cXHQgKi9cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyMjQyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobXNrLVxcdTAwM2ViYWNrbG9nX3VuYWNjb3VudGVkIFxcdTAwMjZcXHUwMDI2IHNrLVxcdTAwM2Vza19zb2NrZXQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yMjQzLVxcdFxcdFxcdCAgICAgICBtZW1fY2dyb3VwX2Zyb21fc2soc2spKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oPTY5NT1zdGF0aWMgaW5saW5lIHZvaWQgbXB0Y3BfYm9ycm93X2Z3ZG1lbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC03MDEtXFx0ICovXFxubmV0L21wdGNwL3Byb3RvY29sLmg6NzAyOlxcdERFQlVHX05FVF9XQVJOX09OX09OQ0Uoc2tiLVxcdTAwM2VkZXN0cnVjdG9yKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC03MDMtXFx0c2tfZm9yd2FyZF9hbGxvY19hZGQoc2ssIHNrYi1cXHUwMDNldHJ1ZXNpemUpO1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz05OTQ9c3RhdGljIGJvb2wgc2tiX2lzX2Z1bGx5X21hcHBlZChzdHJ1Y3Qgc29jayAqc3NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMDAwLVxcdGlmICh1bmxpa2VseShza2JfY29uc3VtZWQgXFx1MDAzZT0gc2tiLVxcdTAwM2VsZW4pKSB7XFxubmV0L21wdGNwL3N1YmZsb3cuYzoxMDAxOlxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMDAyLVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2dlbi5oPTcyPW10eXBlX2ZsdXNoKHN0cnVjdCBpcF9zZXQgKnNldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC03OS1cXHRzZXQtXFx1MDAzZWVsZW1lbnRzID0gMDtcXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfZ2VuLmg6ODA6XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShhdG9taWM2NF9yZWFkKFxcdTAwMjZzZXQtXFx1MDAzZWV4dF9zaXplKSBcXHUwMDNlIDApO1xcbm5ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9nZW4uaC04MS19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jPTQxNj1saXN0X3NldF9mbHVzaChzdHJ1Y3QgaXBfc2V0ICpzZXQpXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTY6Mjg6MzYuNjgzNTE2OTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI2MTQ4NTM4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgREVCVUdfTkVUX1dBUk5fT05fT05DRWAgbWFjcm8sIGFuZCBpdCdzIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L25ldF9kZWJ1Zy5oYC4gQSBxdWljayBjaGVjayBzaG93cyB0aGF0IGl0J3MgZ2F0ZWQgYnkgYENPTkZJR19ERUJVR19ORVRgLiBJZiB0aGF0J3MgKm5vdCogZW5hYmxlZCwgdGhlIG1hY3JvIGVmZmVjdGl2ZWx5IHR1cm5zIGludG8gYSBjb21waWxlLXRpbWUgY2hlY2sgdXNpbmcgYEJVSUxEX0JVR19PTl9JTlZBTElEKGNvbmQpYC4gIFNvLCB0aGUgb25seSB3YXkgSSdtIGdvaW5nIHRvIGFjdHVhbGx5IHNlZSB0aGlzIHRoaW5nICp3YXJuKiBhdCBydW50aW1lIGlzIGlmIGBDT05GSUdfREVCVUdfTkVUYCBpcyBmbGlwcGVkIG9uLiBSaWdodCwgbWFrZXMgc2Vuc2UuXG5cbkdpdmVuIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIHdoaWNoIGluY2x1ZGVzIGBJTkVUYCwgYE5FVEZJTFRFUmAsIHZhcmlvdXMgYElQX1NFVGAgb3B0aW9ucyBsaWtlIGJpdG1hcCBhbmQgbGlzdCBzZXRzLCBpdCBzZWVtcyBsaWtlIG5ldHdvcmsgZGVidWdnaW5nIHdvdWxkIGJlIHZhbHVhYmxlIGhlcmUuIFNvLCBJJ20gZ29pbmcgdG8gYWRkIGBERUJVR19ORVRgIHRvIHRoZSBleGlzdGluZyBsaXN0IG9mIGNvbmZpZ3MuIE1ha2VzIHRoZSBtb3N0IHNlbnNlIGluIHRoaXMgY29udGV4dC5cblxuTm93LCBiZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgc2hvdWxkIGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHN1cmUgYERFQlVHX05FVGAgaXMgaW5kZWVkIGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gdGhpcyBlbnZpcm9ubWVudC4gR290dGEgYmUgY2VydGFpbiBiZWZvcmUgSSBnbyBtZXNzaW5nIHdpdGggdGhlIGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDg3NCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNjoyODo1OS4yOTgzNzM0NDJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjcwNjQ1MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFQlVHX05FVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZy5kZWJ1Zz0xMj1jb25maWcgTkVUX05TX1JFRkNOVF9UUkFDS0VSXFxuLS1cXG5uZXQvS2NvbmZpZy5kZWJ1Zy0yMC1cXG5uZXQvS2NvbmZpZy5kZWJ1ZzoyMTpjb25maWcgREVCVUdfTkVUXFxubmV0L0tjb25maWcuZGVidWctMjItXFx0Ym9vbCBcXFwiQWRkIGdlbmVyaWMgbmV0d29ya2luZyBkZWJ1Z1xcXCJcXG4tLVxcbm5ldC9LY29uZmlnLmRlYnVnLTI3LVxcbm5ldC9LY29uZmlnLmRlYnVnOjI4OmNvbmZpZyBERUJVR19ORVRfU01BTExfUlROTFxcbm5ldC9LY29uZmlnLmRlYnVnLTI5LVxcdGJvb2wgXFxcIkFkZCBleHRyYSBwZXItbmV0bnMgbXV0ZXggaW5zaWRlIFJUTkxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjI5OjAxLjUyNTQ0NjgzNVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTgxMjI4MjE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRmx1c2ggT3BlcmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgREVCVUdfTkVUYCBpcyBpbmRlZWQgZW5hYmxlZC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSd2ZSBnb3QgdGhlIHJlbGV2YW50IGNvbmZpZ3MgaGVyZTogYElORVRgLCBgTkVURklMVEVSYCwgYElQX1NFVGAsIGBJUF9TRVRfQklUTUFQX0lQYCwgYElQX1NFVF9CSVRNQVBfSVBNQUNgLCBgSVBfU0VUX0JJVE1BUF9QT1JUYCwgYElQX1NFVF9MSVNUX1NFVGAsIGFuZCwgb2YgY291cnNlLCBgREVCVUdfTkVUYC5cblxuTm93LCBJJ20gZm9jdXNpbmcgb24gdGhlIGtleSBzeW1ib2xzOiBgaXBfc2V0X2ZsdXNoYCwgYGxpc3Rfc2V0X2ZsdXNoYCwgYGJpdG1hcF9pcF9mbHVzaGAsIGBiaXRtYXBfaXBtYWNfZmx1c2hgLCBhbmQgYGJpdG1hcF9wb3J0X2ZsdXNoYC4gVGhlIGBiaXRtYXBfKl9mbHVzaGAgZnVuY3Rpb25zIGFyZSBnZW5lcmF0ZWQgYnkgYElQU0VUX1RPS0VOKGJpdG1hcF9pcCwgX2ZsdXNoKWAuIEkgbmVlZCB0byBlbnN1cmUgdGhleSdyZSBhY2Nlc3NpYmxlLlxuXG5MZXQncyBzZWUuLi4gbG9va2luZyBhdCBgaXBfc2V0X2JpdG1hcF9nZW4uaGAsIEkgZmluZCBgc3RhdGljIHZvaWQgbXR5cGVfZmx1c2goc3RydWN0IGlwX3NldCAqc2V0KWAuIFRoZSBrZXl3b3JkIFwic3RhdGljXCIgaW5pdGlhbGx5IHJhaXNlZCBhIGNvbmNlcm4sIGFzIEkgdGhvdWdodCBpdCBtaWdodCBiZSBpbmxpbmVkIGFuZCB0aGVyZWZvcmUgbm90IHByZXNlbnQgYXMgYSBzZXBhcmF0ZSBzeW1ib2wuIEJ1dCwgZnVydGhlciBpbnZlc3RpZ2F0aW9uIHJldmVhbHMgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBtdHlwZV92YXJpYW50YCBzdHJ1Y3Q6XG5cbmBgYGNcbnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXBfc2V0X3R5cGVfdmFyaWFudCBtdHlwZSA9IHtcblx0LmthZHRcdD0gbXR5cGVfa2FkdCxcblx0LnVhZHRcdD0gbXR5cGVfdWFkdCxcblx0LmFkdFx0PSB7XG5cdFx0W0lQU0VUX0FERF0gPSBtdHlwZV9hZGQsXG5cdFx0W0lQU0VUX0RFTF0gPSBtdHlwZV9kZWwsXG5cdFx0W0lQU0VUX1RFU1RdID0gbXR5cGVfdGVzdCxcblx0fSxcblx0LmRlc3Ryb3kgPSBtdHlwZV9kZXN0cm95LFxuXHQuZmx1c2hcdD0gbXR5cGVfZmx1c2gsXG4uLi5cbmBgYFxuXG5UaGF0IGFzc2lnbm1lbnQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIG1lYW5zIGl0IHdvbid0IGJlIGlubGluZWQuIFNvLCBgYml0bWFwX2lwX2ZsdXNoYCwgYGJpdG1hcF9pcG1hY19mbHVzaGAsIGFuZCBgYml0bWFwX3BvcnRfZmx1c2hgIHdpbGwgYmUgcHJlc2VudCBhcyBkaXN0aW5jdCBzeW1ib2xzLiBQZXJmZWN0LiBJJ2xsIGluY2x1ZGUgdGhlbSBpbiBteSBhbmFseXNpcy5cblxuTm93LCBsZXQncyByZWNhcCBteSByZWFzb25pbmcuIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBmbHVzaCBvcGVyYXRpb25zIGZvciBiaXRtYXAgYW5kIGxpc3QgSVAgc2V0cy4gRXNzZW50aWFsbHksIGl0IHJlbW92ZXMgdGhlIHJlZHVuZGFudCBhc3NpZ25tZW50cyB0aGF0IHdlcmUgcmVzZXR0aW5nIGVsZW1lbnQgY291bnRzIGFuZCBleHRlbnNpb24gc2l6ZXMgdG8gemVyby4gSW5zdGVhZCwgaXQgYWRkcyBhIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFYCB0byB2ZXJpZnkgdGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFscmVhZHkgemVyby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgbW92ZXMgYXdheSBmcm9tIHNpbGVudGx5IG1hc2tpbmcgYW55IGlzc3VlcyB3aGVyZSBlbGVtZW50IGNvdW50cyBhcmVuJ3QgcHJvcGVybHkgZGVjcmVtZW50ZWQuIE5vdywgaW5zdGVhZCBvZiBoaWRpbmcgdGhlIGJ1ZywgYSB3YXJuaW5nIHdpbGwgYmUgdHJpZ2dlcmVkLCBhbmQgdGhlIHN0YXRlIHdpbGwgcmVtYWluIG5vbi16ZXJvLiBGdXp6aW5nIGlzIGNyaXRpY2FsIGhlcmUgdG8gdmFsaWRhdGUgdGhhdCBlbGVtZW50IGNvdW50cyBhcmUgYWNjdXJhdGVseSBtYW5hZ2VkIGR1cmluZyBzZXQgb3BlcmF0aW9ucyBhbmQgZmx1c2hpbmcuXG5cbkV2ZXJ5dGhpbmcgY2hlY2tzIG91dC4gSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE0NTgsIk91dHB1dFRva2VucyI6MjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE2OjMwOjMxLjMzNzczNTc4MloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTE1MTM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiTkVURklMVEVSXCIsXG4gICAgXCJJUF9TRVRcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfSVBNQUNcIixcbiAgICBcIklQX1NFVF9CSVRNQVBfUE9SVFwiLFxuICAgIFwiSVBfU0VUX0xJU1RfU0VUXCIsXG4gICAgXCJERUJVR19ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9zZXRfZmx1c2hcIixcbiAgICBcImxpc3Rfc2V0X2ZsdXNoXCIsXG4gICAgXCJiaXRtYXBfaXBfZmx1c2hcIixcbiAgICBcImJpdG1hcF9pcG1hY19mbHVzaFwiLFxuICAgIFwiYml0bWFwX3BvcnRfZmx1c2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmx1c2ggb3BlcmF0aW9ucyBmb3IgYml0bWFwIGFuZCBsaXN0IElQIHNldHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHRoYXQgcmVzZXQgdGhlIGVsZW1lbnQgY291bnQgYW5kIGV4dGVuc2lvbiBzaXplIHRvIHplcm8sIGFuZCBpbnN0ZWFkIGFkZHMgYSBERUJVR19ORVRfV0FSTl9PTl9PTkNFIHRvIGFzc2VydCB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgYWxyZWFkeSB6ZXJvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYmVjYXVzZSBpdCByZW1vdmVzIHN0YXRlLXJlc2V0dGluZyBhc3NpZ25tZW50cywgbWVhbmluZyB0aGF0IGlmIGEgYnVnIGV4aXN0cyB3aGVyZSBlbGVtZW50cyBhcmUgbm90IHByb3Blcmx5IGRlY3JlbWVudGVkLCBpdCB3aWxsIG5vdyB0cmlnZ2VyIGEgd2FybmluZyBhbmQgbGVhdmUgdGhlIHN0YXRlIG5vbi16ZXJvLCByYXRoZXIgdGhhbiBzaWxlbnRseSBoaWRpbmcgdGhlIGJ1Zy4gRnV6emluZyB0aGlzIGlzIHZhbHVhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGNvdW50cyBhcmUgY29ycmVjdGx5IG1hbmFnZWQgZHVyaW5nIHNldCBvcGVyYXRpb25zIGFuZCBmbHVzaGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCIsXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIklQX1NFVFwiLFxuICAgIFwiSVBfU0VUX0JJVE1BUF9JUFwiLFxuICAgIFwiSVBfU0VUX0JJVE1BUF9JUE1BQ1wiLFxuICAgIFwiSVBfU0VUX0JJVE1BUF9QT1JUXCIsXG4gICAgXCJJUF9TRVRfTElTVF9TRVRcIixcbiAgICBcIkRFQlVHX05FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3NldF9mbHVzaFwiLFxuICAgIFwibGlzdF9zZXRfZmx1c2hcIixcbiAgICBcImJpdG1hcF9pcF9mbHVzaFwiLFxuICAgIFwiYml0bWFwX2lwbWFjX2ZsdXNoXCIsXG4gICAgXCJiaXRtYXBfcG9ydF9mbHVzaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmbHVzaCBvcGVyYXRpb25zIGZvciBiaXRtYXAgYW5kIGxpc3QgSVAgc2V0cyBieSByZW1vdmluZyByZWR1bmRhbnQgYXNzaWdubWVudHMgdGhhdCByZXNldCB0aGUgZWxlbWVudCBjb3VudCBhbmQgZXh0ZW5zaW9uIHNpemUgdG8gemVybywgYW5kIGluc3RlYWQgYWRkcyBhIERFQlVHX05FVF9XQVJOX09OX09OQ0UgdG8gYXNzZXJ0IHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBhbHJlYWR5IHplcm8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IHJlbW92ZXMgc3RhdGUtcmVzZXR0aW5nIGFzc2lnbm1lbnRzLCBtZWFuaW5nIHRoYXQgaWYgYSBidWcgZXhpc3RzIHdoZXJlIGVsZW1lbnRzIGFyZSBub3QgcHJvcGVybHkgZGVjcmVtZW50ZWQsIGl0IHdpbGwgbm93IHRyaWdnZXIgYSB3YXJuaW5nIGFuZCBsZWF2ZSB0aGUgc3RhdGUgbm9uLXplcm8sIHJhdGhlciB0aGFuIHNpbGVudGx5IGhpZGluZyB0aGUgYnVnLiBGdXp6aW5nIHRoaXMgaXMgdmFsdWFibGUgdG8gZW5zdXJlIHRoYXQgdGhlIGVsZW1lbnQgY291bnRzIGFyZSBjb3JyZWN0bHkgbWFuYWdlZCBkdXJpbmcgc2V0IG9wZXJhdGlvbnMgYW5kIGZsdXNoaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjbx7v[1] Phase: Succeeded StartedAt: 2026-08-06 16:30:43 +0000 UTC FinishedAt: 2026-08-06 16:30:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 16:30:44 +0000 UTC FinishedAt: 2026-08-06 16:30:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2] Phase: Succeeded StartedAt: 2026-08-06 16:30:44 +0000 UTC FinishedAt: 2026-08-06 20:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 16:30:44 +0000 UTC FinishedAt: 2026-08-06 20:19:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 16:30:44 +0000 UTC FinishedAt: 2026-08-06 16:30:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 16:30:44 +0000 UTC FinishedAt: 2026-08-06 16:30:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowjbx7v/series-workflowjbx7v-convert-artifact-2262946870/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 16:30:54 +0000 UTC FinishedAt: 2026-08-06 16:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 16:30:54 +0000 UTC FinishedAt: 2026-08-06 16:50:05 +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:*082c348d-4f22-4af9-b5c2-0e49c71ca70e,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-workflowjbx7v/series-workflowjbx7v-convert-artifact-2262946870/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": "2b45665e-c912-4897-b4b5-4b4943657f7d", "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-workflowjbx7v/series-workflowjbx7v-build-action-2184379212/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 16:30:54 +0000 UTC FinishedAt: 2026-08-06 16:49:55 +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:*082c348d-4f22-4af9-b5c2-0e49c71ca70e,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-workflowjbx7v/series-workflowjbx7v-convert-artifact-2262946870/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": "2b45665e-c912-4897-b4b5-4b4943657f7d", "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-workflowjbx7v/series-workflowjbx7v-build-action-2184379212/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 16:50:05 +0000 UTC FinishedAt: 2026-08-06 16:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 16:50:05 +0000 UTC FinishedAt: 2026-08-06 16:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 16:50:05 +0000 UTC FinishedAt: 2026-08-06 16:50:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 16:50:05 +0000 UTC FinishedAt: 2026-08-06 16:50:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowjbx7v/series-workflowjbx7v-convert-artifact-3702079177/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 16:50:15 +0000 UTC FinishedAt: 2026-08-06 16:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 16:50:15 +0000 UTC FinishedAt: 2026-08-06 16:52:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2b45665e-c912-4897-b4b5-4b4943657f7d,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-workflowjbx7v/series-workflowjbx7v-build-action-2184379212/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-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 16:52:38 +0000 UTC FinishedAt: 2026-08-06 16:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 16:52:38 +0000 UTC FinishedAt: 2026-08-06 16:52:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 16:52:38 +0000 UTC FinishedAt: 2026-08-06 17:13:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 16:52:38 +0000 UTC FinishedAt: 2026-08-06 17:13:02 +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:*082c348d-4f22-4af9-b5c2-0e49c71ca70e,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-workflowjbx7v/series-workflowjbx7v-convert-artifact-3702079177/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": "c6167286-c4fa-4330-8d70-098f422d548c", "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-workflowjbx7v/series-workflowjbx7v-build-action-1320078757/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 16:52:38 +0000 UTC FinishedAt: 2026-08-06 17:12:52 +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:*082c348d-4f22-4af9-b5c2-0e49c71ca70e,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-workflowjbx7v/series-workflowjbx7v-convert-artifact-3702079177/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": "c6167286-c4fa-4330-8d70-098f422d548c", "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-workflowjbx7v/series-workflowjbx7v-build-action-1320078757/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 17:13:02 +0000 UTC FinishedAt: 2026-08-06 17:13:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 17:13:02 +0000 UTC FinishedAt: 2026-08-06 17:13:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 17:13:02 +0000 UTC FinishedAt: 2026-08-06 17:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 17:13:02 +0000 UTC FinishedAt: 2026-08-06 17:15:08 +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:*c6167286-c4fa-4330-8d70-098f422d548c,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-workflowjbx7v/series-workflowjbx7v-build-action-1320078757/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-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 17:15:17 +0000 UTC FinishedAt: 2026-08-06 20:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 17:15:17 +0000 UTC FinishedAt: 2026-08-06 20:19:06 +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":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"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:*2b45665e-c912-4897-b4b5-4b4943657f7d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c6167286-c4fa-4330-8d70-098f422d548c,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-workflowjbx7v/series-workflowjbx7v-build-action-2184379212/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-workflowjbx7v/series-workflowjbx7v-build-action-1320078757/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 17:15:17 +0000 UTC FinishedAt: 2026-08-06 17:15:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 17:15:17 +0000 UTC FinishedAt: 2026-08-06 17:15:22 +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":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"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-workflowjbx7v/series-workflowjbx7v-convert-artifact-3270355742/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 17:15:17 +0000 UTC FinishedAt: 2026-08-06 17:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 17:15:17 +0000 UTC FinishedAt: 2026-08-06 17:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 17:15:17 +0000 UTC FinishedAt: 2026-08-06 17:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 17:15:27 +0000 UTC FinishedAt: 2026-08-06 20:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbx7v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_set_flush","list_set_flush","bitmap_ip_flush","bitmap_ipmac_flush","bitmap_port_flush"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","NETFILTER","IP_SET","IP_SET_BITMAP_IP","IP_SET_BITMAP_IPMAC","IP_SET_BITMAP_PORT","IP_SET_LIST_SET","DEBUG_NET"],"series_id":"ddf873ae-e178-4e5b-81ab-87cf5e785777","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 17:15:27 +0000 UTC FinishedAt: 2026-08-06 20:18:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2b45665e-c912-4897-b4b5-4b4943657f7d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c6167286-c4fa-4330-8d70-098f422d548c,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-workflowjbx7v/series-workflowjbx7v-build-action-2184379212/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-workflowjbx7v/series-workflowjbx7v-build-action-1320078757/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-workflowjbx7v/series-workflowjbx7v-convert-artifact-3270355742/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,}