Name: series-workflowb5r48 Phase: Succeeded StartedAt: 2026-08-16 15:29:57 +0000 UTC FinishedAt: 2026-08-16 19:56:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[0] Phase: Succeeded StartedAt: 2026-08-16 15:29:57 +0000 UTC FinishedAt: 2026-08-16 16:13:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[0].run-triage Phase: Succeeded StartedAt: 2026-08-16 15:29:57 +0000 UTC FinishedAt: 2026-08-16 16:13:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3eb40771c00a8488fa6ed2cc1fe203477908bf38", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_LBLCR" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3eb40771c00a8488fa6ed2cc1fe203477908bf38", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_LBLCR" ], "series_id": "bbe06a83-874a-4647-aedc-9408e9ea8185" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_lblcr_schedule", "ip_vs_schedule" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2NoZWR1bGUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIHJlc291cmNlIGxpbWl0IGNoZWNrIChgYXRvbWljX3JlYWQoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpIFx1MDAzZT0gdGJsLVx1MDAzZW1heF9zaXplYCkgdG8gcHJldmVudCB1bmJvdW5kZWQgZ3Jvd3RoIG9mIHRoZSBMQkxDUiB0YWJsZSwgd2hpY2ggY291bGQgbGVhZCB0byBPT00gb3IgRG9TLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCBmb3IgdGVzdGluZyB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgaXBfdnNfbGJsY3JfbmV3YCB0byBwcmV2ZW50IGV4Y2VlZGluZyBgbWF4X3NpemVgIGluIHRoZSBJUFZTIExCTENSIHNjaGVkdWxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQVlMgc2NoZWR1bGluZyBsb2dpYywgcmVhY2hhYmxlIHdoZW4gaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGZvciBhIGNvbmZpZ3VyZWQgSVBWUyBzZXJ2aWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjExPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2M1YTI5NGE3MTYzZjgzZWJlNmM2MzUxMzc4YjczOTI0MTE1YWM0NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDE2IDE2OjExOjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbmluZGV4IGY1M2YwNWNlZWEzNmYuLjkxZmEzOWVkZWMwYjUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbkBAIC0zNjMsNiAmIzQzOzM2Myw5IEBAIGlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcbiBcbiBcdGVuID0gaXBfdnNfbGJsY3JfZ2V0KGFmLCB0YmwsIGRhZGRyKTtcbiBcdGlmICghZW4pIHtcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZ0YmwtXHUwMDNlZW50cmllcykgXHUwMDNlPSB0YmwtXHUwMDNlbWF4X3NpemUpXG4mIzQzO1x0XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiBcdFx0ZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpO1xuIFx0XHRpZiAoIWVuKVxuIFx0XHRcdHJldHVybiBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2xibGNyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NjaGVkdWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYGlwX3ZzX2xibGNyX25ld2AgdG8gcHJldmVudCBleGNlZWRpbmcgYG1heF9zaXplYCBpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIHNjaGVkdWxpbmcgbG9naWMsIHJlYWNoYWJsZSB3aGVuIGhhbmRsaW5nIG5ldHdvcmsgdHJhZmZpYyBmb3IgYSBjb25maWd1cmVkIElQVlMgc2VydmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdjNWEyOTRhNzE2M2Y4M2ViZTZjNjM1MTM3OGI3MzkyNDExNWFjNDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAxNiAxNjoxMTo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKaW5kZXggZjUzZjA1Y2VlYTM2Zi4uOTFmYTM5ZWRlYzBiNSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKQEAgLTM2Myw2ICYjNDM7MzYzLDkgQEAgaXBfdnNfbGJsY3JfbmV3KHN0cnVjdCBpcF92c19sYmxjcl90YWJsZSAqdGJsLCBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLAogCiAJZW4gPSBpcF92c19sYmxjcl9nZXQoYWYsIHRibCwgZGFkZHIpOwogCWlmICghZW4pIHsKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO3RibC0mZ3Q7ZW50cmllcykgJmd0Oz0gdGJsLSZndDttYXhfc2l6ZSkKJiM0MzsJCQlyZXR1cm4gTlVMTDsKJiM0MzsKIAkJZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpOwogCQlpZiAoIWVuKQogCQkJcmV0dXJuIE5VTEw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgTEJMQ1IgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtb2RpZnlpbmcgYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jYC4gSXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIGluIGBpcF92c19sYmxjcl9uZXdgIHRoYXQgcHJldmVudHMgdGhlIGNyZWF0aW9uIG9mIG5ldyBlbnRyaWVzIGlmIHRoZSB0YWJsZSBzaXplIChgdGJsLSZndDtlbnRyaWVzYCkgaXMgYWxyZWFkeSBhdCBvciBleGNlZWRpbmcgYHRibC0mZ3Q7bWF4X3NpemVgLiBUaGlzIGlzIGEgY3J1Y2lhbCBhZGRpdGlvbiB0byB0aGUgZmxvdywgYXMgaXQgd291bGQgcG90ZW50aWFsbHkgcHJldmVudCBhIERvUyBzaXR1YXRpb24uCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIGBpcF92c19sYmxjcl9uZXdgIGFuZCB0cmFjZSB3aGVyZSB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIFRoaXMgY2hlY2sgaXMgY3JpdGljYWwsIGJ1dCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9uIG90aGVyIHBhcnRzIG9mIHRoZSBJUFZTIHN5c3RlbT8gSG93IGlzIGBtYXhfc2l6ZWAgYmVpbmcgY29uZmlndXJlZCwgYW5kIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBsaW1pdCAqaXMqIHJlYWNoZWQ/IFdlIG5lZWQgdG8gdmVyaWZ5IHRoZSBjb2RlIHBhdGggdG8gZW5zdXJlIHRoYXQgZXhpc3RpbmcgZW50cmllcyBhcmVuJiMzOTt0IHByZW1hdHVyZWx5IGV2aWN0ZWQsIG9yIGlmIHRoZSBsb2dpYyBpcyBzYWZlIHN1Y2ggdGhhdCBhbGwgdHJhZmZpYyB3aWxsIGZhbGwgdG8gYSBkZWZhdWx0IHZhbHVlLCBvciBhIGNvbmZpZ3VyZWQgdmFsdWUsIHRoYXQgd291bGQgYmUgaWRlYWwuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgaW1wbGljYXRpb25zIGFuZCBpZiBhbnkgbG9nZ2luZyBpcyBpbiBwbGFjZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgbWlnaHQgYmUgY3JlYXRlZCB3aXRoIHRoZSBuZXcgY2hlY2suIElzIHRoZXJlIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdCBkdWUgdG8gdGhpcyBhZGRpdGlvbmFsIGF0b21pYyByZWFkPyBNeSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIGNhbGxzIHRvIHRoZSBmdW5jdGlvbiBhbmQgZnVsbHkgdGVzdCB0aGlzIG5ldyBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19sYmxjcl9uZXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz0zNTg9c3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfbGJsY3JfZW50cnkgKlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MzU5OmlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTM2MC1cdFx0dTE2IGFmLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz02NDc9aXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MDctXHRpZiAoIXRibC1cdTAwM2VkZWFkKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzA4Olx0XHRpcF92c19sYmxjcl9uZXcodGJsLCBcdTAwMjZpcGgtXHUwMDNlZGFkZHIsIHN2Yy1cdTAwM2VhZiwgZGVzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MDktXHRzcGluX3VubG9ja19iaChcdTAwMjZzdmMtXHUwMDNlc2NoZWRfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIExCTENSIFNjaGVkdWxpbmcgQmVoYXZpb3IgaW4gSVBWUyoqCgpPa2F5LCBzbyBJIHNlZSBgaXBfdnNfbGJsY3JfbmV3YCBiZWluZyBjYWxsZWQgc3BlY2lmaWNhbGx5IGZyb20gYGlwX3ZzX2xibGNyX3NjaGVkdWxlYC4gVGhhdCB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGZvciBhIG5ldyBMQkxDUiBjb25uZWN0aW9uIChvciBhdCBsZWFzdCwgdGhlIGluaXRpYWxpemF0aW9uKSBpcyBoYXBwZW5pbmcgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yay4gU2luY2UgaXQmIzM5O3MgbGlua2VkIHRvIHRoZSBzY2hlZHVsZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBkaWN0YXRlIGhvdyBMQkxDUiBvcGVyYXRlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSB1c2VkIGZvciBJUFZTIExCTENSLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoYXQgY29udHJvbHMgdGhpcyBuZXcgY29ubmVjdGlvbiBpbnN0YW50aWF0aW9uLCBiZWNhdXNlIHRoZSBzY2hlZHVsaW5nIG11c3QgYmUgcmVseWluZyBvbiBzb21ldGhpbmcgdG8gZGVjaWRlIGlmIHRoaXMgbmV3IGNvbm5lY3Rpb24gaXMgd29ydGggZXN0YWJsaXNoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfbGJsY3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gSVBWUyBDb25maWd1cmF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gTGV0JiMzOTtzIHNlZS4uLkkgbmVlZCB0byBxdWlja2x5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24sIHRoZSBzeW1ib2wsIGZvciBMb2FkIEJhbGFuY2luZyAoTEJMQ1IpIGluc2lkZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBJUCBWaXJ0dWFsIFNlcnZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBnbyByaWdodCB0byB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvaXB2c2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2UgZm9yIHRoZXNlIG9wdGlvbnMuIExldCYjMzk7cyBnZXQgc2VhcmNoaW5nLi4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyB0aGlzIGZlYXR1cmUgaXMgY29udHJvbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtMQkxDUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcdElQX1ZTX0xCTENcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxOTI6Y29uZmlnICBJUF9WU19MQkxDUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDUyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgSVBfVlNfTEJMQ1JgLiBUaGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbGFiZWwtYmFzZWQgY29ubmVjdGlvbiByZXF1ZXN0cywgd2hpY2ggaXMgYSBrZXkgY29uY2VwdC4gUmlnaHQsIGxldCYjMzk7cyBkaXZlIGRlZXBlciBhbmQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIG9mIGBJUF9WU2AgY29uZmlndXJhdGlvbnMgbW9yZSBicm9hZGx5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gYWxsIHRoZSByZWxhdGVkIHNldHRpbmdzLiBUaW1lIHRvIHNlZSB3aGF0IG90aGVyIGBJUF9WU2Agb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoaXMgc3BlY2lmaWMgb25lLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgaW1wbGljYXRpb25zIHRoaXMgc2V0dGluZyBtaWdodCBoYXZlIG9uIHRoZSBvdmVyYWxsIGxvYWQgYmFsYW5jaW5nIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzMQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipBbmFseXppbmcgdGhlIExvYWQgQmFsYW5jaW5nIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBpbiBwbGF5IGhlcmUgYXJlIGNsZWFybHkgcmVsYXRlZCB0byBJUCBWaXJ0dWFsIFNlcnZlciAoSVBWUyksIHNwZWNpZmljYWxseSB0aGUgYElQX1ZTYCBhbmQgYElQX1ZTX0xCTENSYCBzZXR0aW5ncy4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0aGUgc2NoZWR1bGluZyBjb21wb25lbnQg4oCTIGluIHRoaXMgY2FzZSwgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBvdmVyYWxsIGxvYWQgYmFsYW5jaW5nIGZyYW1ld29yaywgc28gdGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byBhc2NlcnRhaW4gaXMgaWYgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgYWZmZWN0cyBob3cgaXQmIzM5O3MgbGlua2VkIGludG8gdGhlIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz01NjQ9c3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo1NjU6X19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNTY2LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz02NDY9c3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjY0NzppcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjQ4LVx0XHQgICAgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTY4My1cdFx0LyogVGhlIGNhY2hlIGVudHJ5IGlzIGludmFsaWQsIHRpbWUgdG8gc2NoZWR1bGUgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjY4NDpcdFx0ZGVzdCA9IF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3ZjKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTY4NS1cdFx0aWYgKCFkZXN0KSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjk4LVx0LyogTm8gY2FjaGUgZW50cnksIHRpbWUgdG8gc2NoZWR1bGUgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjY5OTpcdGRlc3QgPSBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN2Yyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MDAtXHRpZiAoIWRlc3QpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MjItICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo3MjM6c3RhdGljIHN0cnVjdCBpcF92c19zY2hlZHVsZXIgaXBfdnNfbGJsY3Jfc2NoZWR1bGVyID1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcyNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzI3LVx0Lm1vZHVsZSA9XHRcdFRISVNfTU9EVUxFLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzI4Olx0Lm5fbGlzdCA9XHRcdExJU1RfSEVBRF9JTklUKGlwX3ZzX2xibGNyX3NjaGVkdWxlci5uX2xpc3QpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzI5LVx0LmluaXRfc2VydmljZSA9XHRcdGlwX3ZzX2xibGNyX2luaXRfc3ZjLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzMwLVx0LmRvbmVfc2VydmljZSA9XHRcdGlwX3ZzX2xibGNyX2RvbmVfc3ZjLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzMxOlx0LnNjaGVkdWxlID1cdFx0aXBfdnNfbGJsY3Jfc2NoZWR1bGUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MzItfTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz03OTU9c3RhdGljIGludCBfX2luaXQgaXBfdnNfbGJsY3JfaW5pdCh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTgwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjgwMzpcdHJldCA9IHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19sYmxjcl9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODA0LVx0aWYgKHJldClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz04MDk9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2xibGNyX2NsZWFudXAodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTgxMC17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo4MTE6XHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19sYmxjcl9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODEyLVx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFx1MDAyNmlwX3ZzX2xibGNyX29wcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNzIKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGlwX3ZzX2xibGNyYCBzY2hlZHVsZXIgaW1wbGVtZW50YXRpb24sIGFuZCBhIGZldyB0aGluZ3MgYXJlIGltbWVkaWF0ZWx5IGNhdGNoaW5nIG15IGF0dGVudGlvbi4gRmlyc3QsIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgaW50ZXJuYWwgZnVuY3Rpb25zLiBIb3dldmVyLCBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byB0aGUgYC5zY2hlZHVsZWAgbWVtYmVyIHdpdGhpbiB0aGUgYGlwX3ZzX2xibGNyX3NjaGVkdWxlcmAgc3RydWN0LiBUaGF0JiMzOTtzIGhvdyBpdCYjMzk7cyBiZWluZyBleHBvc2VkIHRvIHRoZSBsYXJnZXIgSVBWUyBmcmFtZXdvcmsuCgpUaGVuLCB0aGUgc2NoZWR1bGVyIGl0c2VsZiBpcyByZWdpc3RlcmVkIHdpdGggdGhlIHN5c3RlbSB1c2luZyBgcmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyYC4gQ2xhc3NpYyByZWdpc3RyYXRpb24gcGF0dGVybi4gQnV0IGl0IGJyaW5ncyB1cCBhIHF1ZXN0aW9uLCBhbmQgaXQmIzM5O3MgYSBjcml0aWNhbCBvbmUgZm9yIG15IGFuYWx5c2lzOiBhcmUgdGhlcmUgYW55ICpub24tc3RhdGljKiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNgPyBJZiB0aGVyZSBhcmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHB1cnBvc2UuIEFyZSB0aGV5IHJlbGF0ZWQgdG8gZXh0ZXJuYWwgQVBJcywgbW9kdWxlIGluaXRpYWxpemF0aW9uLCBvciBwZXJoYXBzIGV2ZW4gc29tZXRoaW5nIG1vcmUgbmVmYXJpb3VzPyBBbnkgZXh0ZXJuYWxseSB2aXNpYmxlIGZ1bmN0aW9uIGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kLiBMZXQmIzM5O3MgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSpcXHMmIzQzO1xcKj9bYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTc2CgkJCQkJCQlvdXRwdXQ6IDc5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyBmb3IgTm9uLVN0YXRpYyBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBhYm91dCB0byBkaXZlIGludG8gdGhpcyBmaWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBzY2FuIGl0IGZvciBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGhpcyBpc24mIzM5O3QgbmVjZXNzYXJpbHkgYSBkZWVwIGNvZGUgcmV2aWV3LCBidXQgbW9yZSBvZiBhIHJhcGlkIGFzc2Vzc21lbnQgZm9yIGEgc3BlY2lmaWMgY29uY2Vybi4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGJyZWFrIGVuY2Fwc3VsYXRpb24sIG9yIHBvdGVudGlhbGx5IGludHJvZHVjZSB1bmludGVuZGVkIHNpZGUgZWZmZWN0cywgZXNwZWNpYWxseSBpZiB0aGlzIGlzIHBhcnQgb2YgYSBsYXJnZXIsIHdlbGwtZGVmaW5lZCBhcmNoaXRlY3R1cmUuIEl0JiMzOTtzIGEgcXVpY2sgdHJpYWdlIHRvIHNlZSBpZiBhbnl0aGluZyBqdW1wcyBvdXQgdGhhdCByZXF1aXJlcyBpbW1lZGlhdGUgYXR0ZW50aW9uIHJlZ2FyZGluZyBvYmplY3QgaW50ZXJhY3Rpb24gb3Igc2hhcmVkIHN0YXRlIGNvbmNlcm5zLiBCYXNpY2FsbHksIGxldCYjMzk7cyBlc3RhYmxpc2ggaWYgdGhlcmUgYXJlIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIHJlbGF0ZWQgdG8gZnVuY3Rpb24gc2NvcGUgYW5kIGltcGFjdC4gVGhpcyBjb3VsZCBzYXZlIGEgbG90IG9mIHRpbWUgbGF0ZXIgYnkgZm9jdXNpbmcgb24gYW55IHBvdGVudGlhbCBpbW1lZGlhdGUgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKFthLXpBLVpfXVthLXpBLVowLTlfXSpcXHMmIzQzOykmIzQzO1xcKj9bYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9OTE9c3RydWN0IGlwX3ZzX2Rlc3Rfc2V0IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy05Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjk4OnN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3Rfc2V0X2luc2VydChzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTk5LVx0XHRcdFx0ICBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgYm9vbCBjaGVjaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xMjItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoxMjM6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfZWxlbV9yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xMjQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTEzMz1pcF92c19kZXN0X3NldF9lcmFzZShzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTQ4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MTQ5OnN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3Rfc2V0X2VyYXNlYWxsKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTUwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xNTktLyogZ2V0IHdlaWdodGVkIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgZGVzdGluYXRpb24gc2V0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoxNjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTYxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0yMDgtLyogZ2V0IHdlaWdodGVkIG1vc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSBkZXN0aW5hdGlvbiBzZXQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjIwOTpzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9tYXgoc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0yMTAte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTI4OD1zdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2c192YXJzX3RhYmxlW10gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMjk4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Mjk5OnN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19sYmxjcl9mcmVlKHN0cnVjdCBpcF92c19sYmxjcl9lbnRyeSAqZW4pXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zMDAte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OT1pcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMzk1LSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Mzk2OnN0YXRpYyB2b2lkIGlwX3ZzX2xibGNyX2ZsdXNoKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zOTcte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTQxMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjQxMzpzdGF0aWMgaW50IHN5c2N0bF9sYmxjcl9leHBpcmF0aW9uKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy00MTQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTQyMS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjQyMjpzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfbGJsY3JfZnVsbF9jaGVjayhzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDIzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy00NTgtICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo0NTk6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfY2hlY2tfZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDYwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01MDctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo1MDg6c3RhdGljIGludCBpcF92c19sYmxjcl9pbml0X3N2YyhzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNTA5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01NDYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo1NDc6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfZG9uZV9zdmMoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yylcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTU0OC17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9NzIzPXN0YXRpYyBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyIGlwX3ZzX2xibGNyX3NjaGVkdWxlciA9XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzM3LSNpZmRlZiBDT05GSUdfU1lTQ1RMXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo3Mzg6c3RhdGljIGludCBfX25ldF9pbml0IF9faXBfdnNfbGJsY3JfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03Mzkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc3Mi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc3MzpzdGF0aWMgdm9pZCBfX25ldF9leGl0IF9faXBfdnNfbGJsY3JfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03NzQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc4NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc4NTpzdGF0aWMgaW50IF9fbmV0X2luaXQgX19pcF92c19sYmxjcl9pbml0KHN0cnVjdCBuZXQgKm5ldCkgeyByZXR1cm4gMDsgfVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Nzg2OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgX19pcF92c19sYmxjcl9leGl0KHN0cnVjdCBuZXQgKm5ldCkgeyB9XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03ODctXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9NzkwPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXBfdnNfbGJsY3Jfb3BzID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc5NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc5NTpzdGF0aWMgaW50IF9faW5pdCBpcF92c19sYmxjcl9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03OTYte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTgwOC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjgwOTpzdGF0aWMgdm9pZCBfX2V4aXQgaXBfdnNfbGJsY3JfY2xlYW51cCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODEwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcyOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBpcF92c19sYmxjci5jYCBTY2hlZHVsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIGZvY3VzZWQgc29sZWx5IG9uIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2AuICBBbGwgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmaWxlIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZyBmb3IgaG93IHdlJiMzOTtsbCBoYW5kbGUgdGhpcyBpbiB0aGUgc3ltYm9sIGFuYWx5c2lzLiAgVGhlIGVudHJ5IHBvaW50IGlzIGNsZWFybHkgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYCwgdGhhdCYjMzk7cyB0aGUgb25lIHJlZ2lzdGVyZWQgYXMgdGhlIGAuc2NoZWR1bGVgIGNhbGxiYWNrIGZvciB0aGUgYGlwX3ZzX2xibGNyX3NjaGVkdWxlcmAuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jYCBhcyB3ZWxsLCBqdXN0IGluIGNhc2UsIGJ1dCB0aGUgcGF0Y2ggc2VlbXMgZm9jdXNlZC4KCk5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiB3ZSB3YW50IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU2luY2UgZXZlcnl0aGluZyBpbiBgaXBfdnNfbGJsY3IuY2AgaXMgYHN0YXRpY2AsIHdlIGhhdmUgYSBkZWNpc2lvbiB0byBtYWtlLiAgVGhlIGd1aWRhbmNlIHN1Z2dlc3RzIHRoYXQgaWYgdGhlcmUgYXJlIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3ZSBjYW4gcHJvdmlkZSBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlmIGl0JiMzOTtzIG5vdCBpbmxpbmVkLiBUaGFua2Z1bGx5LCBpdCYjMzk7cyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBzbyBpdCYjMzk7cyBub3QgaW5saW5lZC4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgcHJvdmlkZSB0aGUgZnVuY3Rpb24gdGhhdCAqY2FsbHMqIHRoZSBzY2hlZHVsZXIsIHdoaWNoIGlzIGxpa2VseSBpbiBgaXBfdnNfY29yZS5jYC4gTGV0JiMzOTtzIGNvbmZpcm0sIHNvIEkmIzM5O2xsIGNoZWNrIGBpcF92c19zY2hlZHVsZWAgbm93IGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjU1OkVYUE9SVF9TWU1CT0wocmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6NTY6RVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTU3LUVYUE9SVF9TWU1CT0woaXBfdnNfcHJvdG9fbmFtZSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz00MzE9aXBfdnNfc2NoZWRfcGVyc2lzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTE5LVx0aWYgKCFjdCB8fCAhaXBfdnNfY2hlY2tfdGVtcGxhdGUoY3QsIE5VTEwpKSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjUyMDpcdFx0c3RydWN0IGlwX3ZzX3NjaGVkdWxlciAqc2NoZWQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTUyMS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTYxOD1zdHJ1Y3QgaXBfdnNfY29ubiAqXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjYxOTppcF92c19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MjAtXHQgICAgICAgc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLCBpbnQgKmlnbm9yZWQsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MjQtXHRzdHJ1Y3QgaXBfdnNfY29ubiAqY3AgPSBOVUxMO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo2MjU6XHRzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyICpzY2hlZDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNjI2LVx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3Q7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwmIzM5O3MgTG9hZCBCYWxhbmNpbmcgU2NoZWR1bGVyKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgaXBfdnNfc2NoZWR1bGVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgbG9va2luZyBsaWtlIGl0JiMzOTtzIG5vdCBhIHN0YXRpYyBlbnRpdHkuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgbGV0JiMzOTtzIHBpdm90IGFuZCBjaGVjayBvdXQgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZXhwb3J0ZWQgb3IganVzdCBhIHN0YXRpYyBwaWVjZSBvZiBjb2RlLiBBaCwgcmlnaHQsIGl0JiMzOTtzIHN0YXRpYy4gQnV0IHdhaXQgYSBtaW51dGUsIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaXMgYWN0dWFsbHkgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBMQkxDUiBzY2hlZHVsZXIsIHdoaWNoIGlzIHRoZSBpbXBvcnRhbnQgcGFydCBoZXJlLgoKSG1tLCB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGlubGluZWQgc2luY2UgaXRzIGFkZHJlc3MgaXMgYWN0dWFsbHkgYmVpbmcgdGFrZW4uIFNlZSwgdGhlIGNvZGUgc2hvd3M6CgpgYGBjCgkuc2NoZWR1bGUgPQkJaXBfdnNfbGJsY3Jfc2NoZWR1bGUsCmBgYAoKVGhhdCBtZWFucyBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgICp3aWxsKiBoYXZlIGl0cyBvd24sIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0IGNoYW5nZXMgdGhpbmdzLiBUaGlzIG9wZW5zIHRoZSBkb29yIHRvIGluY2x1ZGluZyBib3RoIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgYW5kIGBpcF92c19zY2hlZHVsZWAgaW4gb3VyIGFuYWx5c2lzLiBJJiMzOTttIGdvaW5nIHRvIHJldmlzaXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkmIzM5O3ZlIGdvdCBgSVBfVlNgIGFuZCBgSVBfVlNfTEJMQ1JgLCBidXQgYXJlIHRoZXJlIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gQmVzdCB0byBkb3VibGUtY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTX0xCTENSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzk3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgQmFjayBpbnRvIExCTENSIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSByZW1lbWJlciBsb29raW5nIGludG8gYExCTENSYCByZWNlbnRseSwgYW5kIEkgYWN0dWFsbHkgZm91bmQgaXQgaW4gYSBwcmV2aW91cyBzZWFyY2guIExldCYjMzk7cyBzZWUuLi5JIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGNvbmZpZ3VyZWQuIEdpdmVuIGl0cyBsaWtlbHkgc2lnbmlmaWNhbmNlLCB0aGUgS2NvbmZpZyBmaWxlIHdpbGwgcHJvYmFibHkgaGF2ZSB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24uIEkmIzM5O2xsIGp1bXAgc3RyYWlnaHQgdG8gbGluZSAxOTIgKG9yIHRoZXJlYWJvdXRzKSBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGNvbnRleHQgc3Vycm91bmRpbmcgdGhhdC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBkZXRhaWxzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTg1Olx0XHQgIG92ZXJsb2FkZWQgKGl0cyBhY3RpdmUgY29ubmVjdGlvbiBudW1iZXJzIGlzIGxhcmdlciB0aGFuIGl0cyB3ZWlnaHQpXG4gMTg2Olx0XHQgIGFuZCB0aGVyZSBpcyBhIHNlcnZlciBpbiBpdHMgaGFsZiBsb2FkLCB0aGVuIGFsbG9jYXRlIHRoZSB3ZWlnaHRlZFxuIDE4NzpcdFx0ICBsZWFzdC1jb25uZWN0aW9uIHNlcnZlciB0byB0aGlzIElQIGFkZHJlc3MuXG4gMTg4Olx0XG4gMTg5Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTkwOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgIElQX1ZTX0xCTENSXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE5NDpcdFx0aGVscFxuIDE5NTpcdFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcbiAxOTY6XHRcdCAgYWxnb3JpdGhtIGlzIGFsc28gZm9yIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyBcbiAxOTc6XHRcdCAgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuIEl0IGRpZmZlcnMgZnJvbSB0aGUgTEJMQyBzY2hlZHVsaW5nXG4gMTk4Olx0XHQgIGFzIGZvbGxvd3M6IHRoZSBsb2FkIGJhbGFuY2VyIG1haW50YWlucyBtYXBwaW5ncyBmcm9tIGEgdGFyZ2V0XG4gMTk5Olx0XHQgIHRvIGEgc2V0IG9mIHNlcnZlciBub2RlcyB0aGF0IGNhbiBzZXJ2ZSB0aGUgdGFyZ2V0LiBSZXF1ZXN0cyBmb3JcbiAyMDA6XHRcdCAgYSB0YXJnZXQgYXJlIGFzc2lnbmVkIHRvIHRoZSBsZWFzdC1jb25uZWN0aW9uIG5vZGUgaW4gdGhlIHRhcmdldCYjMzk7c1xuIDIwMTpcdFx0ICBzZXJ2ZXIgc2V0LiBJZiBhbGwgdGhlIG5vZGUgaW4gdGhlIHNlcnZlciBzZXQgYXJlIG92ZXIgbG9hZGVkLFxuIDIwMjpcdFx0ICBpdCBwaWNrcyB1cCBhIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgY2x1c3RlciBhbmQgYWRkcyBpdFxuIDIwMzpcdFx0ICBpbiB0aGUgc2V2ZXIgc2V0IGZvciB0aGUgdGFyZ2V0LiBJZiB0aGUgc2VydmVyIHNldCBoYXMgbm90IGJlZW5cbiAyMDQ6XHRcdCAgbW9kaWZpZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSwgdGhlIG1vc3QgbG9hZGVkIG5vZGUgaXMgcmVtb3ZlZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTcyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55ICpleHBsaWNpdCogZGVwZW5kZW5jaWVzIGxpc3RlZCBiZXlvbmQgd2hhdCBpdCBpbmhlcml0cyBmcm9tIHRoZSBgSVBfVlNgIG1lbnVjb25maWcuIFRoYXQmIzM5O3MgYSBsaXR0bGUgdW51c3VhbCwgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGF0IGxlYXN0IGEgZmV3Li4uIENvdWxkIGJlIGEgYml0IHJpc2t5LiBUbyBjb25maXJtIHRoaXMsIEkgc2hvdWxkIGRpZyBpbnRvIHRoZSBgSVBfVlNgIG1lbnVjb25maWcgaXRzZWxmIGFuZCBzZWUgaWYgaXQmIzM5O3MgaW1wbGljaXRseSBwdWxsaW5nIGluIGFueSBjcml0aWNhbCBjb21wb25lbnRzIHRoYXQgKnRoaXMqIGNvZGUgcmVsaWVzIG9uLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzbiYjMzk7dCBnb2luZyB0byBjYXVzZSBhbnkgdW5pbnRlbmRlZCBidWlsZCBwcm9ibGVtcyBkb3duIHRoZSBsaW5lIG9yIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBpZiBgSVBfVlNgIGlzIGRpc2FibGVkLiBUaW1lIHRvIGludmVzdGlnYXRlIHRoYXQgY29uZmlnIG9wdGlvbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgSVAgVmlydHVhbCBTZXJ2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRtZW51Y29uZmlnIElQX1ZTXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgODpcdFx0ZGVwZW5kcyBvbiAoTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDSz1uKVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJUCBWaXJ0dWFsIFNlcnZlciBzdXBwb3J0IHdpbGwgbGV0IHlvdSBidWlsZCBhIGhpZ2gtcGVyZm9ybWFuY2VcbiAgMTE6XHRcdCAgdmlydHVhbCBzZXJ2ZXIgYmFzZWQgb24gY2x1c3RlciBvZiB0d28gb3IgbW9yZSByZWFsIHNlcnZlcnMuIFRoaXNcbiAgMTI6XHRcdCAgb3B0aW9uIG11c3QgYmUgZW5hYmxlZCBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZSBjbHVzdGVyZWQgY29tcHV0ZXJzXG4gIDEzOlx0XHQgIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgaW50ZXJjZXB0aW5nIGluY29taW5nIGNvbm5lY3Rpb25zIHRvIGFcbiAgMTQ6XHRcdCAgc2luZ2xlIElQIGFkZHJlc3MgYW5kIHNjaGVkdWxpbmcgdGhlbSB0byByZWFsIHNlcnZlcnMuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRocmVlIHJlcXVlc3QgZGlzcGF0Y2hpbmcgdGVjaG5pcXVlcyBhcmUgaW1wbGVtZW50ZWQsIHRoZXkgYXJlXG4gIDE3Olx0XHQgIHZpcnR1YWwgc2VydmVyIHZpYSBOQVQsIHZpcnR1YWwgc2VydmVyIHZpYSB0dW5uZWxpbmcgYW5kIHZpcnR1YWxcbiAgMTg6XHRcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxuICAxOTpcdFx0ICBiZSB1c2VkIHRvIGNob29zZSB3aGljaCBzZXJ2ZXIgdGhlIGNvbm5lY3Rpb24gaXMgZGlyZWN0ZWQgdG8sXG4gIDIwOlx0XHQgIHRodXMgbG9hZCBiYWxhbmNpbmcgY2FuIGJlIGFjaGlldmVkIGFtb25nIHRoZSBzZXJ2ZXJzLiAgRm9yIG1vcmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MjQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneTogSVBWUyBhbmQgdGhlIExCTENSIFNjaGVkdWxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIGZ1enppbmcgYElQX1ZTYCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgZnVuZGFtZW50YWxseSByZWxpZXMgb24gYElORVRgIGFuZCBgTkVURklMVEVSYC4gVGhhdCYjMzk7cyBleHBlY3RlZCwgYnV0IGdvb2QgdG8gY29uZmlybS4gV2UgbmVlZCB0byBtYWtlIHN1cmUgYm90aCBgSVBfVlNgIGFuZCBzcGVjaWZpY2FsbHkgYElQX1ZTX0xCTENSYCBhcmUgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4gCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gd2hhdCYjMzk7cyBhY3R1YWxseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIGFuZCB0aHVzIGZ1enphYmxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGBpcF92c19sYmxjcl9uZXdgIGluaXRpYWxseS4gU2luY2UgSVBWUyBpcyBjb25maWd1cmVkIHZpYSBuZXRsaW5rIG9yIGBzZXRzb2Nrb3B0YCwgSSBuZWVkIHRvIHNlZSBpZiB0aGUgc2NoZWR1bGVyIGlzIGludm9rZWQgd2hlbiBhIHBhY2tldCBhcnJpdmVzIGF0IGEgdmlydHVhbCBzZXJ2aWNlLiBZZXMsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBxdWlja2x5IGRvdWJsZS1jaGVja2luZyBmb3IgYW55IG90aGVyIHJlcXVpcmVkIGNvbmZpZ3MuIEFscmlnaHQsIGBORVRGSUxURVJgIGFuZCBgSU5FVGAgYXJlIHN0YW5kYXJkIHByZXJlcXVpc2l0ZXMuIFRoZW4gd2UgaGF2ZSB0aGUgc3BlY2lmaWMgb25lczogYElQX1ZTYCBhbmQgYElQX1ZTX0xCTENSYC4gR290IGl0LgoKT2theSwgbGV0JiMzOTtzIGxpc3QgbXkgRm9jdXNTeW1ib2xzOgoqICAgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYAoqICAgYGlwX3ZzX3NjaGVkdWxlYAoKQWgsIGEgcXVpY2sgcmVhbGl0eSBjaGVjayEgYGlwX3ZzX2xibGNyX25ld2AgaXMgKnN0YXRpYyBpbmxpbmUqLCBzbyBpdCB3b24mIzM5O3QgaGF2ZSBpdHMgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0JiMzOTtzIGdvb2QgdG8ga2VlcCBpbiBtaW5kIGZvciBzeW1ib2wgcmVzb2x1dGlvbi4gSG93ZXZlciwgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYCBpcyBzdGF0aWMsICpidXQqIGl0cyBhZGRyZXNzIGlzIHRha2VuLCBzbyBpdCBzaG91bGQgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBBbmQgYGlwX3ZzX3NjaGVkdWxlYCBpcyBleHBvcnRlZCwgc28gaXQmIzM5O3MgZ29vZCB0byBnbyBhcyB3ZWxsLgoKTGV0IG1lIGdvIGJhY2sgYW5kIGRvdWJsZSBjaGVjayBgaXBfdnNfbGJsY3JfbmV3YCBqdXN0IGluIHRoZSBzb3VyY2UsIHdoaWNoIGlzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2AgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2xibGNyX25ldyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OD1zdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19sYmxjcl9lbnRyeSAqXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzozNTk6aXBfdnNfbGJsY3JfbmV3KHN0cnVjdCBpcF92c19sYmxjcl90YWJsZSAqdGJsLCBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMzYwLVx0XHR1MTYgYWYsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTY0Nz1pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcwNy1cdGlmICghdGJsLVx1MDAzZWRlYWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo3MDg6XHRcdGlwX3ZzX2xibGNyX25ldyh0YmwsIFx1MDAyNmlwaC1cdTAwM2VkYWRkciwgc3ZjLVx1MDAzZWFmLCBkZXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcwOS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnN2Yy1cdTAwM2VzY2hlZF9sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NjIKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUFZTIExCTENSIFNjaGVkdWxlciBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYGlwX3ZzX2xibGNyX25ld2AgaXMgZGVmaW5lZCBhcyBgc3RhdGljIGlubGluZWAuIFRoaXMgbWVhbnMgdGhhdCBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlzIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGF0IGlubGluZWQgY29kZSB3aWxsIGFjdHVhbGx5IHJlc2lkZSBhbmQgYmUgZXhlY3V0ZWQuIEtub3dpbmcgdGhpcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4KClRoZXJlZm9yZSwgSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCDigJMgYWJzb2x1dGVseSwgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiBvZiBjcml0aWNhbCBzY2hlZHVsaW5nIGxvZ2ljLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldC4gSSYjMzk7bGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIGJ5IHNldHRpbmcgYEZvY3VzU3ltYm9sc2AgdG8gYFsmIzM0O2lwX3ZzX2xibGNyX3NjaGVkdWxlJiMzNDssICYjMzQ7aXBfdnNfc2NoZWR1bGUmIzM0O11gLiBUYXJnZXRpbmcgYm90aCB0aGUgaW1tZWRpYXRlIGZ1bmN0aW9uIGFuZCBhIGJyb2FkZXIgc2NvcGUgb2Ygc2NoZWR1bGluZyBpcyB3aXNlLgoKSSYjMzk7bGwgYWxzbyBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb25zIGBbJiMzNDtJUF9WUyYjMzQ7LCAmIzM0O0lQX1ZTX0xCTENSJiMzNDtdYCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYXJlIGFjdGl2ZSBkdXJpbmcgZnV6emluZy4KCk15IHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGJvdW5kcyBjaGVjayB3aXRoaW4gYGlwX3ZzX2xibGNyX25ld2AuIFRoaXMgY2hlY2sgZGlyZWN0bHkgYWltcyB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYG1heF9zaXplYCBsaW1pdCB3aXRoaW4gdGhlIElQVlMgTEJMQ1Igc2NoZWR1bGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29yZSBwYXJ0IG9mIHRoZSBJUFZTIHNjaGVkdWxpbmcgbG9naWMsIGFuZCB0aGVyZWZvcmUgY291bGQgcG90ZW50aWFsbHkgYmUgdHJpZ2dlcmVkIGFuZCByZWFjaGVkIHdoZW5ldmVyIHRoZSBzeXN0ZW0gaXMgaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGZvciBhbiBJUFZTIHNlcnZpY2UgY29uZmlndXJlZCB0byB1c2UgdGhpcyBzY2hlZHVsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2xibGNyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NjaGVkdWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYGlwX3ZzX2xibGNyX25ld2AgdG8gcHJldmVudCBleGNlZWRpbmcgYG1heF9zaXplYCBpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIHNjaGVkdWxpbmcgbG9naWMsIHJlYWNoYWJsZSB3aGVuIGhhbmRsaW5nIG5ldHdvcmsgdHJhZmZpYyBmb3IgYSBjb25maWd1cmVkIElQVlMgc2VydmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19zY2hlZHVsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBpcF92c19sYmxjcl9uZXdgIHRvIHByZXZlbnQgZXhjZWVkaW5nIGBtYXhfc2l6ZWAgaW4gdGhlIElQVlMgTEJMQ1Igc2NoZWR1bGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBzY2hlZHVsaW5nIGxvZ2ljLCByZWFjaGFibGUgd2hlbiBoYW5kbGluZyBuZXR3b3JrIHRyYWZmaWMgZm9yIGEgY29uZmlndXJlZCBJUFZTIHNlcnZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSByZXNvdXJjZSBsaW1pdCBjaGVjayAoYGF0b21pY19yZWFkKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKSBcdTAwM2U9IHRibC1cdTAwM2VtYXhfc2l6ZWApIHRvIHByZXZlbnQgdW5ib3VuZGVkIGdyb3d0aCBvZiB0aGUgTEJMQ1IgdGFibGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gT09NIG9yIERvUy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdjNWEyOTRhNzE2M2Y4M2ViZTZjNjM1MTM3OGI3MzkyNDExNWFjNDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAxNiAxNjoxMTo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKaW5kZXggZjUzZjA1Y2VlYTM2Zi4uOTFmYTM5ZWRlYzBiNSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKQEAgLTM2Myw2ICYjNDM7MzYzLDkgQEAgaXBfdnNfbGJsY3JfbmV3KHN0cnVjdCBpcF92c19sYmxjcl90YWJsZSAqdGJsLCBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLAogCiAJZW4gPSBpcF92c19sYmxjcl9nZXQoYWYsIHRibCwgZGFkZHIpOwogCWlmICghZW4pIHsKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO3RibC0mZ3Q7ZW50cmllcykgJmd0Oz0gdGJsLSZndDttYXhfc2l6ZSkKJiM0MzsJCQlyZXR1cm4gTlVMTDsKJiM0MzsKIAkJZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpOwogCQlpZiAoIWVuKQogCQkJcmV0dXJuIE5VTEw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTEJMQ1IgVGFibGUgUmVzb3VyY2UgTGltaXQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNgIGFuZCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIHJlc291cmNlIGxpbWl0IGZvciB0aGUgTEJMQ1IgdGFibGUuIEkgc2VlIHRoZSBtYWluIGFkZGl0aW9uIGlzIHRoaXMgY2hlY2sgd2l0aGluIGBpcF92c19sYmxjcl9uZXcoKWA6IGBpZiAoYXRvbWljX3JlYWQoJmFtcDt0YmwtJmd0O2VudHJpZXMpICZndDs9IHRibC0mZ3Q7bWF4X3NpemUpYC4gSWYgdGhlIHRhYmxlIGlzIGZ1bGwsIGl0IGp1c3QgcmV0dXJucyBgTlVMTGAsIHdoaWNoIG1ha2VzIHNlbnNlOyB3ZSBkb24mIzM5O3Qgd2FudCB1bmJvdW5kZWQgZ3Jvd3RoLiBJdCYjMzk7cyBhIHNlbnNpYmxlIGNoZWNrIHRvIHByZXZlbnQgRG9TLgoKSG1tLCBhbSBJIG1pc3NpbmcgYW55dGhpbmc/IERvZXMgdGhpcyBpbnRyb2R1Y3Rpb24gb3BlbiBzb21lIGtpbmQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0eT8gTm8sIGl0IGp1c3QgYmFpbHMgaWYgaXQmIzM5O3MgZnVsbC4gSXQgcmV0dXJucyBgTlVMTGAsIHNvIHRoZSBjYWxsZXIgd291bGQgaGF2ZSB0byBoYW5kbGUgdGhhdCBjb25kaXRpb24uIExldCYjMzk7cyBsb29rIGF0IHRoZSBjb250ZXh0LgoKSG9sZCBvbiwgaW4gdGhpcyBjb2RlIHNuaXBwZXQ6CgpgYGBjCgllbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7CglpZiAoIWVuKSB7CgkJaWYgKGF0b21pY19yZWFkKCZhbXA7dGJsLSZndDtlbnRyaWVzKSAmZ3Q7PSB0YmwtJmd0O21heF9zaXplKQoJCQlyZXR1cm4gTlVMTDsKCgkJZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpOwoJCWlmICghZW4pCgkJCXJldHVybiBOVUxMOwpgYGAKCkkmIzM5O20gdGhyb3duIGJ5IGBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpYC4gVGhhdCBmZWVscy4uLm9mZi4gSXQmIzM5O3Mgbm90IGEgc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9uLiBJcyBpdCBhIG1hY3JvPyBEZWZpbml0ZWx5IG5vdCBhIG5hdGl2ZSBrZXJuZWwgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdW51c3VhbC4gSXQmIzM5O3Mgc3VwcG9zZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBgZW5gLCBzbyBpdCBpcyBwcm9iYWJseSBzb21ldGhpbmcgbGlrZSBga21hbGxvYyhzaXplb2YoKmVuKSwgR0ZQX0FUT01JQylgPyBUaGF0IHdvdWxkIG1ha2UgbW9yZSBzZW5zZSwgYnV0IHRoZSBjb2RlIHNheXMgYGttYWxsb2Nfb2JqYC4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGdvIGFuZCBsb29rIGF0IHRoZSBzb3VyY2UgdG8gc2VlIHdoYXQgdGhhdCBpcywgYmVjYXVzZSBJIGRvbiYjMzk7dCBzZWUgaXQgZG9jdW1lbnRlZCBhcyBhIGtlcm5lbCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a21hbGxvY19vYmomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz05OD1zdGF0aWMgdm9pZCBpcF92c19kZXN0X3NldF9pbnNlcnQoc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTA5LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MTEwOlx0ZSA9IGttYWxsb2Nfb2JqKCplLCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTExMS1cdGlmIChlID09IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9MzU5PWlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNjgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzozNjk6XHRcdGVuID0ga21hbGxvY19vYmooKmVuLCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTM3MC1cdFx0aWYgKCFlbilcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz01MDg9c3RhdGljIGludCBpcF92c19sYmxjcl9pbml0X3N2YyhzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTUxNS1cdCAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NTE2Olx0dGJsID0ga21hbGxvY19vYmooKnRibCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01MTctXHRpZiAodGJsID09IE5VTEwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMzYKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIE1lbW9yeSBTYWZldHkqKgoKT2theSwgc28gYGttYWxsb2Nfb2JqYC4uLiByaWdodCwgdGhhdCYjMzk7cyBsaWtlbHkgYSBtYWNybyBvciBpbmxpbmUgZnVuY3Rpb24uIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpdHMgZGVmaW5pdGlvbiwgcHJvYmFibHkgaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYCBvciBzb21ld2hlcmUgc2ltaWxhciBqdXN0IHRvIGJlIHN1cmUsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgY3JpdGljYWwgcGFydCBoZXJlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZTsgaXQgaW50cm9kdWNlcyBhIGNoZWNrOgoKYGBgYwoJCWlmIChhdG9taWNfcmVhZCgmYW1wO3RibC0mZ3Q7ZW50cmllcykgJmd0Oz0gdGJsLSZndDttYXhfc2l6ZSkKCQkJcmV0dXJuIE5VTEw7CmBgYAoKRXNzZW50aWFsbHksIGl0JiMzOTtzIGp1c3QgYWRkaW5nIGEgYm91bmRzIGNoZWNrLiBUaGlzIHByZXZlbnRzIGEgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0eSBieSBsaW1pdGluZyB0aGUgbnVtYmVyIG9mIHRhYmxlIGVudHJpZXMuIFRoYXQmIzM5O3MgZ29vZCwgYSByZWFzb25hYmxlIGFuZCBleHBlY3RlZCBzYWZldHkgbWVhc3VyZS4gQ3J1Y2lhbGx5LCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBzYWZldHkgaXNzdWVzLiBJdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgZG9lc24mIzM5O3QgY2hhbmdlIGV4aXN0aW5nIG1lbW9yeSBpbml0aWFsaXphdGlvbiBwYXR0ZXJucywgaXQgZG9lc24mIzM5O3QgbGVhayBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGl0IGRlZmluaXRlbHkgZG9lc24mIzM5O3QgdXNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KClRoZXJlZm9yZSwgdGhpcyBpc24mIzM5O3QgYSBjYXNlIHdoZXJlIEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyIChLTVNBTikgaXMgbmVlZGVkLiBLQVNBTiBhbmQgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgYmVjYXVzZSBpdCYjMzk7cyBwdXJlbHkgYSBEb1MgZml4IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBjb3JydXB0aW9uIHJpc2tzLiBJdCYjMzk7cyBqdXN0IGEgbWF0dGVyIG9mIGxpbWl0aW5nIHRoZSByZXNvdXJjZSB1c2FnZS4KCkxldCBtZSBqdXN0IHF1aWNrbHkgcmUtZXhhbWluZSB0aGUgY29kZSBibG9jayB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbi4uLgoKYGBgYwpAQCAtMzYzLDYgJiM0MzszNjMsOSBAQCBpcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsCiAKIAllbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7CiAJaWYgKCFlbikgewomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7dGJsLSZndDtlbnRyaWVzKSAmZ3Q7PSB0YmwtJmd0O21heF9zaXplKQomIzQzOwkJCXJldHVybiBOVUxMOwomIzQzOwogCQllbiA9IGttYWxsb2Nfb2JqKCplbiwgR0ZQX0FUT01JQyk7CiAJCWlmICghZW4pCiAJCQlyZXR1cm4gTlVMTDsKYGBgCgpZZXAsIHRoYXQmIzM5O3MgaXQuIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgYSBtaXNzaW5nIGxpbWl0IGNoZWNrLiBObyByaXNrIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgdGhhdCBJIGNhbiBzZWUuIFRoaXMgcGF0Y2ggaXMgcGVyZmVjdGx5IGZpbmUsIGZyb20gYSBtZW1vcnkgc2FmZXR5IHN0YW5kcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgcmVzb3VyY2UgbGltaXQgY2hlY2sgKGBhdG9taWNfcmVhZChcdTAwMjZ0YmwtXHUwMDNlZW50cmllcykgXHUwMDNlPSB0YmwtXHUwMDNlbWF4X3NpemVgKSB0byBwcmV2ZW50IHVuYm91bmRlZCBncm93dGggb2YgdGhlIExCTENSIHRhYmxlLCB3aGljaCBjb3VsZCBsZWFkIHRvIE9PTSBvciBEb1MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHRoaXMgY2hhbmdlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSByZXNvdXJjZSBsaW1pdCBjaGVjayAoYGF0b21pY19yZWFkKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKSBcdTAwM2U9IHRibC1cdTAwM2VtYXhfc2l6ZWApIHRvIHByZXZlbnQgdW5ib3VuZGVkIGdyb3d0aCBvZiB0aGUgTEJMQ1IgdGFibGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gT09NIG9yIERvUy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjExOjU4LjMyMTY5Mzc1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMTgxMzg4NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19MQkxDUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2xibGNyX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zY2hlZHVsZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSByZXNvdXJjZSBsaW1pdCBjaGVjayAoYGF0b21pY19yZWFkKFxcdTAwMjZ0YmwtXFx1MDAzZWVudHJpZXMpIFxcdTAwM2U9IHRibC1cXHUwMDNlbWF4X3NpemVgKSB0byBwcmV2ZW50IHVuYm91bmRlZCBncm93dGggb2YgdGhlIExCTENSIHRhYmxlLCB3aGljaCBjb3VsZCBsZWFkIHRvIE9PTSBvciBEb1MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYGlwX3ZzX2xibGNyX25ld2AgdG8gcHJldmVudCBleGNlZWRpbmcgYG1heF9zaXplYCBpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIHNjaGVkdWxpbmcgbG9naWMsIHJlYWNoYWJsZSB3aGVuIGhhbmRsaW5nIG5ldHdvcmsgdHJhZmZpYyBmb3IgYSBjb25maWd1cmVkIElQVlMgc2VydmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTE6NTguMzIxNzAyNDM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgzMjM4MTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2M1YTI5NGE3MTYzZjgzZWJlNmM2MzUxMzc4YjczOTI0MTE1YWM0NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAxNiAxNjoxMTo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuaW5kZXggZjUzZjA1Y2VlYTM2Zi4uOTFmYTM5ZWRlYzBiNSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuQEAgLTM2Myw2ICszNjMsOSBAQCBpcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsXFxuIFxcbiBcXHRlbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7XFxuIFxcdGlmICghZW4pIHtcXG4rXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZ0YmwtXFx1MDAzZWVudHJpZXMpIFxcdTAwM2U9IHRibC1cXHUwMDNlbWF4X3NpemUpXFxuK1xcdFxcdFxcdHJldHVybiBOVUxMO1xcbitcXG4gXFx0XFx0ZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpO1xcbiBcXHRcXHRpZiAoIWVuKVxcbiBcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTE6NTkuNzA1Nzg5MDg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTg4MDIwNTY5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX0xCTENSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NjaGVkdWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgaXBfdnNfbGJsY3JfbmV3YCB0byBwcmV2ZW50IGV4Y2VlZGluZyBgbWF4X3NpemVgIGluIHRoZSBJUFZTIExCTENSIHNjaGVkdWxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQVlMgc2NoZWR1bGluZyBsb2dpYywgcmVhY2hhYmxlIHdoZW4gaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGZvciBhIGNvbmZpZ3VyZWQgSVBWUyBzZXJ2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3YzVhMjk0YTcxNjNmODNlYmU2YzYzNTEzNzhiNzM5MjQxMTVhYzQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMTYgMTY6MTE6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBmNTNmMDVjZWVhMzZmLi45MWZhMzllZGVjMGI1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5AQCAtMzYzLDYgKzM2Myw5IEBAIGlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcbiBcbiBcdGVuID0gaXBfdnNfbGJsY3JfZ2V0KGFmLCB0YmwsIGRhZGRyKTtcbiBcdGlmICghZW4pIHtcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKSBcdTAwM2U9IHRibC1cdTAwM2VtYXhfc2l6ZSlcbitcdFx0XHRyZXR1cm4gTlVMTDtcbitcbiBcdFx0ZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpO1xuIFx0XHRpZiAoIWVuKVxuIFx0XHRcdHJldHVybiBOVUxMO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTE6NTkuNzA1NzkwNDk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NjAyNjAzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBMQkxDUiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIG1vZGlmeWluZyBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNgLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIElQVlMgTEJMQ1Igc2NoZWR1bGVyLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhleSd2ZSBhZGRlZCBhIGNoZWNrIGluIGBpcF92c19sYmxjcl9uZXdgIHRoYXQgcHJldmVudHMgdGhlIGNyZWF0aW9uIG9mIG5ldyBlbnRyaWVzIGlmIHRoZSB0YWJsZSBzaXplIChgdGJsLVx1MDAzZWVudHJpZXNgKSBpcyBhbHJlYWR5IGF0IG9yIGV4Y2VlZGluZyBgdGJsLVx1MDAzZW1heF9zaXplYC4gVGhpcyBpcyBhIGNydWNpYWwgYWRkaXRpb24gdG8gdGhlIGZsb3csIGFzIGl0IHdvdWxkIHBvdGVudGlhbGx5IHByZXZlbnQgYSBEb1Mgc2l0dWF0aW9uLlxuXG5MZXQncyBkaXZlIGludG8gYGlwX3ZzX2xibGNyX25ld2AgYW5kIHRyYWNlIHdoZXJlIHRoaXMgaXMgYmVpbmcgY2FsbGVkIGZyb20uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gVGhpcyBjaGVjayBpcyBjcml0aWNhbCwgYnV0IHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb24gb3RoZXIgcGFydHMgb2YgdGhlIElQVlMgc3lzdGVtPyBIb3cgaXMgYG1heF9zaXplYCBiZWluZyBjb25maWd1cmVkLCBhbmQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGxpbWl0ICppcyogcmVhY2hlZD8gV2UgbmVlZCB0byB2ZXJpZnkgdGhlIGNvZGUgcGF0aCB0byBlbnN1cmUgdGhhdCBleGlzdGluZyBlbnRyaWVzIGFyZW4ndCBwcmVtYXR1cmVseSBldmljdGVkLCBvciBpZiB0aGUgbG9naWMgaXMgc2FmZSBzdWNoIHRoYXQgYWxsIHRyYWZmaWMgd2lsbCBmYWxsIHRvIGEgZGVmYXVsdCB2YWx1ZSwgb3IgYSBjb25maWd1cmVkIHZhbHVlLCB0aGF0IHdvdWxkIGJlIGlkZWFsLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgaW1wbGljYXRpb25zIGFuZCBpZiBhbnkgbG9nZ2luZyBpcyBpbiBwbGFjZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgbWlnaHQgYmUgY3JlYXRlZCB3aXRoIHRoZSBuZXcgY2hlY2suIElzIHRoZXJlIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdCBkdWUgdG8gdGhpcyBhZGRpdGlvbmFsIGF0b21pYyByZWFkPyBNeSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIGNhbGxzIHRvIHRoZSBmdW5jdGlvbiBhbmQgZnVsbHkgdGVzdCB0aGlzIG5ldyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyOCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjA0LjQ5MTgxOTg4N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDUxMDQ2OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfbGJsY3JfbmV3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OD1zdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19sYmxjcl9lbnRyeSAqXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MzU5OmlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNjAtXFx0XFx0dTE2IGFmLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTY0Nz1pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzA3LVxcdGlmICghdGJsLVxcdTAwM2VkZWFkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjcwODpcXHRcXHRpcF92c19sYmxjcl9uZXcodGJsLCBcXHUwMDI2aXBoLVxcdTAwM2VkYWRkciwgc3ZjLVxcdTAwM2VhZiwgZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzA5LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzdmMtXFx1MDAzZXNjaGVkX2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjowNC41OTY5Mjk1MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTUyNjg1ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIExCTENSIFNjaGVkdWxpbmcgQmVoYXZpb3IgaW4gSVBWUyoqXG5cbk9rYXksIHNvIEkgc2VlIGBpcF92c19sYmxjcl9uZXdgIGJlaW5nIGNhbGxlZCBzcGVjaWZpY2FsbHkgZnJvbSBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIGEgbmV3IExCTENSIGNvbm5lY3Rpb24gKG9yIGF0IGxlYXN0LCB0aGUgaW5pdGlhbGl6YXRpb24pIGlzIGhhcHBlbmluZyB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLiBTaW5jZSBpdCdzIGxpbmtlZCB0byB0aGUgc2NoZWR1bGVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZGljdGF0ZSBob3cgTEJMQ1Igb3BlcmF0ZXMuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgdGhhdCBhcmUgdXNlZCBmb3IgSVBWUyBMQkxDUi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyB3aGF0IGNvbnRyb2xzIHRoaXMgbmV3IGNvbm5lY3Rpb24gaW5zdGFudGlhdGlvbiwgYmVjYXVzZSB0aGUgc2NoZWR1bGluZyBtdXN0IGJlIHJlbHlpbmcgb24gc29tZXRoaW5nIHRvIGRlY2lkZSBpZiB0aGlzIG5ldyBjb25uZWN0aW9uIGlzIHdvcnRoIGVzdGFibGlzaGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjA3LjcxMjIwMDMxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIyODU0OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2xibGNyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjowNy44MTQ0OTMzNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUzMTkzNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIElQVlMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gTGV0J3Mgc2VlLi4uSSBuZWVkIHRvIHF1aWNrbHkgbG9jYXRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiwgdGhlIHN5bWJvbCwgZm9yIExvYWQgQmFsYW5jaW5nIChMQkxDUikgaW5zaWRlIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIElQIFZpcnR1YWwgU2VydmVyLiBTcGVjaWZpY2FsbHksIEknbGwgZ28gcmlnaHQgdG8gdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnNgIGRpcmVjdG9yeS4gVGhhdCdzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2UgZm9yIHRoZXNlIG9wdGlvbnMuIExldCdzIGdldCBzZWFyY2hpbmcuLi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaG93IHRoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTM3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6MTEuMjY3NjkxMjUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjYxNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkxCTENSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcXHRJUF9WU19MQkxDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1JcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjoxMS4zNDQ5NjQyMTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTUyOTQ0MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJUFZTIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgSVBfVlNfTEJMQ1JgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBsYWJlbC1iYXNlZCBjb25uZWN0aW9uIHJlcXVlc3RzLCB3aGljaCBpcyBhIGtleSBjb25jZXB0LiBSaWdodCwgbGV0J3MgZGl2ZSBkZWVwZXIgYW5kIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBvZiBgSVBfVlNgIGNvbmZpZ3VyYXRpb25zIG1vcmUgYnJvYWRseS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFsbCB0aGUgcmVsYXRlZCBzZXR0aW5ncy4gVGltZSB0byBzZWUgd2hhdCBvdGhlciBgSVBfVlNgIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGlzIHNwZWNpZmljIG9uZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgaW1wbGljYXRpb25zIHRoaXMgc2V0dGluZyBtaWdodCBoYXZlIG9uIHRoZSBvdmVyYWxsIGxvYWQgYmFsYW5jaW5nIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6MTQuNDk3OTEyMTYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMxMjMzNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjE0LjYxMTA0MjExNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzIwMDM4MTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipBbmFseXppbmcgdGhlIExvYWQgQmFsYW5jaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gcGxheSBoZXJlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gSVAgVmlydHVhbCBTZXJ2ZXIgKElQVlMpLCBzcGVjaWZpY2FsbHkgdGhlIGBJUF9WU2AgYW5kIGBJUF9WU19MQkxDUmAgc2V0dGluZ3MuIE15IGluaXRpYWwgZm9jdXMgaXMgdGhlIHNjaGVkdWxpbmcgY29tcG9uZW50IOKAkyBpbiB0aGlzIGNhc2UsIGBpcF92c19sYmxjcl9zY2hlZHVsZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgb3ZlcmFsbCBsb2FkIGJhbGFuY2luZyBmcmFtZXdvcmssIHNvIHRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gYXNjZXJ0YWluIGlzIGlmIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGFmZmVjdHMgaG93IGl0J3MgbGlua2VkIGludG8gdGhlIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzMSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjE3LjMzMTA4NDg4MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE4MTUyNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9NTY0PXN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjU2NTpfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNTY2LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTY0Nj1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjY0NzppcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTY0OC1cXHRcXHQgICAgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjgzLVxcdFxcdC8qIFRoZSBjYWNoZSBlbnRyeSBpcyBpbnZhbGlkLCB0aW1lIHRvIHNjaGVkdWxlICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Njg0OlxcdFxcdGRlc3QgPSBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN2Yyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjg1LVxcdFxcdGlmICghZGVzdCkge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjk4LVxcdC8qIE5vIGNhY2hlIGVudHJ5LCB0aW1lIHRvIHNjaGVkdWxlICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Njk5OlxcdGRlc3QgPSBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN2Yyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzAwLVxcdGlmICghZGVzdCkge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzIyLSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjcyMzpzdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19sYmxjcl9zY2hlZHVsZXIgPVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcyNC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MjctXFx0Lm1vZHVsZSA9XFx0XFx0VEhJU19NT0RVTEUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzI4OlxcdC5uX2xpc3QgPVxcdFxcdExJU1RfSEVBRF9JTklUKGlwX3ZzX2xibGNyX3NjaGVkdWxlci5uX2xpc3QpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcyOS1cXHQuaW5pdF9zZXJ2aWNlID1cXHRcXHRpcF92c19sYmxjcl9pbml0X3N2YyxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MzAtXFx0LmRvbmVfc2VydmljZSA9XFx0XFx0aXBfdnNfbGJsY3JfZG9uZV9zdmMsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzMxOlxcdC5zY2hlZHVsZSA9XFx0XFx0aXBfdnNfbGJsY3Jfc2NoZWR1bGUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzMyLX07XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz03OTU9c3RhdGljIGludCBfX2luaXQgaXBfdnNfbGJsY3JfaW5pdCh2b2lkKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjgwMzpcXHRyZXQgPSByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXFx1MDAyNmlwX3ZzX2xibGNyX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODA0LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz04MDk9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2xibGNyX2NsZWFudXAodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy04MTAte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjgxMTpcXHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcXHUwMDI2aXBfdnNfbGJsY3Jfc2NoZWR1bGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy04MTItXFx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFxcdTAwMjZpcF92c19sYmxjcl9vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjoxNy40MTI5MDQyNzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzNzA1MDYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpcF92c19sYmxjcmAgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uLCBhbmQgYSBmZXcgdGhpbmdzIGFyZSBpbW1lZGlhdGVseSBjYXRjaGluZyBteSBhdHRlbnRpb24uIEZpcnN0LCBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIGludGVybmFsIGZ1bmN0aW9ucy4gSG93ZXZlciwgaXQncyBiZWluZyBhc3NpZ25lZCB0byB0aGUgYC5zY2hlZHVsZWAgbWVtYmVyIHdpdGhpbiB0aGUgYGlwX3ZzX2xibGNyX3NjaGVkdWxlcmAgc3RydWN0LiBUaGF0J3MgaG93IGl0J3MgYmVpbmcgZXhwb3NlZCB0byB0aGUgbGFyZ2VyIElQVlMgZnJhbWV3b3JrLlxuXG5UaGVuLCB0aGUgc2NoZWR1bGVyIGl0c2VsZiBpcyByZWdpc3RlcmVkIHdpdGggdGhlIHN5c3RlbSB1c2luZyBgcmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyYC4gQ2xhc3NpYyByZWdpc3RyYXRpb24gcGF0dGVybi4gQnV0IGl0IGJyaW5ncyB1cCBhIHF1ZXN0aW9uLCBhbmQgaXQncyBhIGNyaXRpY2FsIG9uZSBmb3IgbXkgYW5hbHlzaXM6IGFyZSB0aGVyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2A/IElmIHRoZXJlIGFyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcHVycG9zZS4gQXJlIHRoZXkgcmVsYXRlZCB0byBleHRlcm5hbCBBUElzLCBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIG9yIHBlcmhhcHMgZXZlbiBzb21ldGhpbmcgbW9yZSBuZWZhcmlvdXM/IEFueSBleHRlcm5hbGx5IHZpc2libGUgZnVuY3Rpb24gaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQuIExldCdzIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTcyLCJPdXRwdXRUb2tlbnMiOjc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6MjEuMzQ5OTU4NjQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTAzMDI5OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxccytcXFxcKj9bYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjIxLjQxODk5NTM5NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODM5NjE2NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGZvciBOb24tU3RhdGljIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBhYm91dCB0byBkaXZlIGludG8gdGhpcyBmaWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBzY2FuIGl0IGZvciBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGhpcyBpc24ndCBuZWNlc3NhcmlseSBhIGRlZXAgY29kZSByZXZpZXcsIGJ1dCBtb3JlIG9mIGEgcmFwaWQgYXNzZXNzbWVudCBmb3IgYSBzcGVjaWZpYyBjb25jZXJuLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBicmVhayBlbmNhcHN1bGF0aW9uLCBvciBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMsIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyLCB3ZWxsLWRlZmluZWQgYXJjaGl0ZWN0dXJlLiBJdCdzIGEgcXVpY2sgdHJpYWdlIHRvIHNlZSBpZiBhbnl0aGluZyBqdW1wcyBvdXQgdGhhdCByZXF1aXJlcyBpbW1lZGlhdGUgYXR0ZW50aW9uIHJlZ2FyZGluZyBvYmplY3QgaW50ZXJhY3Rpb24gb3Igc2hhcmVkIHN0YXRlIGNvbmNlcm5zLiBCYXNpY2FsbHksIGxldCdzIGVzdGFibGlzaCBpZiB0aGVyZSBhcmUgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MgcmVsYXRlZCB0byBmdW5jdGlvbiBzY29wZSBhbmQgaW1wYWN0LiBUaGlzIGNvdWxkIHNhdmUgYSBsb3Qgb2YgdGltZSBsYXRlciBieSBmb2N1c2luZyBvbiBhbnkgcG90ZW50aWFsIGltbWVkaWF0ZSBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzYsIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjoyOC4yNTg2MTU5OTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMzY1MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFxzKykrXFxcXCo/W2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTkxPXN0cnVjdCBpcF92c19kZXN0X3NldCB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy05Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo5ODpzdGF0aWMgdm9pZCBpcF92c19kZXN0X3NldF9pbnNlcnQoc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtOTktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgYm9vbCBjaGVjaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTEyMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoxMjM6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfZWxlbV9yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTI0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTEzMz1pcF92c19kZXN0X3NldF9lcmFzZShzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xNDgtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MTQ5OnN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3Rfc2V0X2VyYXNlYWxsKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTE1MC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xNTktLyogZ2V0IHdlaWdodGVkIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgZGVzdGluYXRpb24gc2V0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MTYwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xNjEte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMjA4LS8qIGdldCB3ZWlnaHRlZCBtb3N0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgZGVzdGluYXRpb24gc2V0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MjA5OnN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21heChzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0yMTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9Mjg4PXN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHZzX3ZhcnNfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTI5OC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoyOTk6c3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2xibGNyX2ZyZWUoc3RydWN0IGlwX3ZzX2xibGNyX2VudHJ5ICplbilcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zMDAte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9MzU5PWlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTM5NS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzozOTY6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfZmx1c2goc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zOTcte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDEyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjQxMzpzdGF0aWMgaW50IHN5c2N0bF9sYmxjcl9leHBpcmF0aW9uKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDE0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTQyMS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo0MjI6c3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2xibGNyX2Z1bGxfY2hlY2soc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy00MjMte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDU4LSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjQ1OTpzdGF0aWMgdm9pZCBpcF92c19sYmxjcl9jaGVja19leHBpcmUoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDYwLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTUwNy1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo1MDg6c3RhdGljIGludCBpcF92c19sYmxjcl9pbml0X3N2YyhzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTUwOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01NDYtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NTQ3OnN0YXRpYyB2b2lkIGlwX3ZzX2xibGNyX2RvbmVfc3ZjKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNTQ4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTcyMz1zdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19sYmxjcl9zY2hlZHVsZXIgPVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzM3LSNpZmRlZiBDT05GSUdfU1lTQ1RMXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzM4OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBfX2lwX3ZzX2xibGNyX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTczOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03NzItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzczOnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgX19pcF92c19sYmxjcl9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03NzQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzg0LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc4NTpzdGF0aWMgaW50IF9fbmV0X2luaXQgX19pcF92c19sYmxjcl9pbml0KHN0cnVjdCBuZXQgKm5ldCkgeyByZXR1cm4gMDsgfVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc4NjpzdGF0aWMgdm9pZCBfX25ldF9leGl0IF9faXBfdnNfbGJsY3JfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpIHsgfVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc4Ny1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTc5MD1zdGF0aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIGlwX3ZzX2xibGNyX29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc5NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo3OTU6c3RhdGljIGludCBfX2luaXQgaXBfdnNfbGJsY3JfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc5Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy04MDgtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6ODA5OnN0YXRpYyB2b2lkIF9fZXhpdCBpcF92c19sYmxjcl9jbGVhbnVwKHZvaWQpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODEwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6MjguMzM5OTg3MzQxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjU4MjkzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaXBfdnNfbGJsY3IuY2AgU2NoZWR1bGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgZm9jdXNlZCBzb2xlbHkgb24gYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jYC4gIEFsbCB0aGUgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUgYXJlIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnIGZvciBob3cgd2UnbGwgaGFuZGxlIHRoaXMgaW4gdGhlIHN5bWJvbCBhbmFseXNpcy4gIFRoZSBlbnRyeSBwb2ludCBpcyBjbGVhcmx5IGBpcF92c19sYmxjcl9zY2hlZHVsZWAsIHRoYXQncyB0aGUgb25lIHJlZ2lzdGVyZWQgYXMgdGhlIGAuc2NoZWR1bGVgIGNhbGxiYWNrIGZvciB0aGUgYGlwX3ZzX2xibGNyX3NjaGVkdWxlcmAuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jYCBhcyB3ZWxsLCBqdXN0IGluIGNhc2UsIGJ1dCB0aGUgcGF0Y2ggc2VlbXMgZm9jdXNlZC5cblxuTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IHdlIHdhbnQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBTaW5jZSBldmVyeXRoaW5nIGluIGBpcF92c19sYmxjci5jYCBpcyBgc3RhdGljYCwgd2UgaGF2ZSBhIGRlY2lzaW9uIHRvIG1ha2UuICBUaGUgZ3VpZGFuY2Ugc3VnZ2VzdHMgdGhhdCBpZiB0aGVyZSBhcmUgbm8gbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHdlIGNhbiBwcm92aWRlIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaWYgaXQncyBub3QgaW5saW5lZC4gVGhhbmtmdWxseSwgaXQncyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBzbyBpdCdzIG5vdCBpbmxpbmVkLiBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCBwcm92aWRlIHRoZSBmdW5jdGlvbiB0aGF0ICpjYWxscyogdGhlIHNjaGVkdWxlciwgd2hpY2ggaXMgbGlrZWx5IGluIGBpcF92c19jb3JlLmNgLiBMZXQncyBjb25maXJtLCBzbyBJJ2xsIGNoZWNrIGBpcF92c19zY2hlZHVsZWAgbm93IGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyOSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjozNC4wMDU4MTk5NDFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjI1MDY0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19zY2hlZHVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTQtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1NTpFWFBPUlRfU1lNQk9MKHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1NjpFWFBPUlRfU1lNQk9MKHVucmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTU3LUVYUE9SVF9TWU1CT0woaXBfdnNfcHJvdG9fbmFtZSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTQzMT1pcF92c19zY2hlZF9wZXJzaXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTUxOS1cXHRpZiAoIWN0IHx8ICFpcF92c19jaGVja190ZW1wbGF0ZShjdCwgTlVMTCkpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjUyMDpcXHRcXHRzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyICpzY2hlZDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTUyMS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NjE4PXN0cnVjdCBpcF92c19jb25uICpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjYxOTppcF92c19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNjIwLVxcdCAgICAgICBzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIGludCAqaWdub3JlZCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNjI0LVxcdHN0cnVjdCBpcF92c19jb25uICpjcCA9IE5VTEw7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo2MjU6XFx0c3RydWN0IGlwX3ZzX3NjaGVkdWxlciAqc2NoZWQ7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MjYtXFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3Q7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjM0LjExMjA3OTY4NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc5MjU1NTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsJ3MgTG9hZCBCYWxhbmNpbmcgU2NoZWR1bGVyKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGlwX3ZzX3NjaGVkdWxlYCBmdW5jdGlvbiwgYW5kIGl0J3MgbG9va2luZyBsaWtlIGl0J3Mgbm90IGEgc3RhdGljIGVudGl0eS4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBOb3csIGxldCdzIHBpdm90IGFuZCBjaGVjayBvdXQgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBleHBvcnRlZCBvciBqdXN0IGEgc3RhdGljIHBpZWNlIG9mIGNvZGUuIEFoLCByaWdodCwgaXQncyBzdGF0aWMuIEJ1dCB3YWl0IGEgbWludXRlLCBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlzIGFjdHVhbGx5IHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgTEJMQ1Igc2NoZWR1bGVyLCB3aGljaCBpcyB0aGUgaW1wb3J0YW50IHBhcnQgaGVyZS5cblxuSG1tLCB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCBkb2Vzbid0IHNlZW0gdG8gYmUgaW5saW5lZCBzaW5jZSBpdHMgYWRkcmVzcyBpcyBhY3R1YWxseSBiZWluZyB0YWtlbi4gU2VlLCB0aGUgY29kZSBzaG93czpcblxuYGBgY1xuXHQuc2NoZWR1bGUgPVx0XHRpcF92c19sYmxjcl9zY2hlZHVsZSxcbmBgYFxuXG5UaGF0IG1lYW5zIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgKndpbGwqIGhhdmUgaXRzIG93biwgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQgY2hhbmdlcyB0aGluZ3MuIFRoaXMgb3BlbnMgdGhlIGRvb3IgdG8gaW5jbHVkaW5nIGJvdGggYGlwX3ZzX2xibGNyX3NjaGVkdWxlYCBhbmQgYGlwX3ZzX3NjaGVkdWxlYCBpbiBvdXIgYW5hbHlzaXMuIEknbSBnb2luZyB0byByZXZpc2l0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEkndmUgZ290IGBJUF9WU2AgYW5kIGBJUF9WU19MQkxDUmAsIGJ1dCBhcmUgdGhlcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBCZXN0IHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjozOC42OTEzMzc4OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MDAzNzYzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfTEJMQ1JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjM4LjgwMDM1MDY2M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk1ODQxMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBCYWNrIGludG8gTEJMQ1IgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIEkgcmVtZW1iZXIgbG9va2luZyBpbnRvIGBMQkxDUmAgcmVjZW50bHksIGFuZCBJIGFjdHVhbGx5IGZvdW5kIGl0IGluIGEgcHJldmlvdXMgc2VhcmNoLiBMZXQncyBzZWUuLi5JIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHVuZGVyc3RhbmQgaG93IGl0J3MgY29uZmlndXJlZC4gR2l2ZW4gaXRzIGxpa2VseSBzaWduaWZpY2FuY2UsIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBwcm9iYWJseSBoYXZlIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbi4gSSdsbCBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMTkyIChvciB0aGVyZWFib3V0cykgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIHRoYXQuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzOTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo0Mi42OTYxOTQ1OTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTg1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTg1OlxcdFxcdCAgb3ZlcmxvYWRlZCAoaXRzIGFjdGl2ZSBjb25uZWN0aW9uIG51bWJlcnMgaXMgbGFyZ2VyIHRoYW4gaXRzIHdlaWdodClcXG4gMTg2OlxcdFxcdCAgYW5kIHRoZXJlIGlzIGEgc2VydmVyIGluIGl0cyBoYWxmIGxvYWQsIHRoZW4gYWxsb2NhdGUgdGhlIHdlaWdodGVkXFxuIDE4NzpcXHRcXHQgIGxlYXN0LWNvbm5lY3Rpb24gc2VydmVyIHRvIHRoaXMgSVAgYWRkcmVzcy5cXG4gMTg4OlxcdFxcbiAxODk6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxOTA6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE5MTpcXHRcXG4gMTkyOlxcdGNvbmZpZyAgSVBfVlNfTEJMQ1JcXG4gMTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTk0OlxcdFxcdGhlbHBcXG4gMTk1OlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxuIDE5NjpcXHRcXHQgIGFsZ29yaXRobSBpcyBhbHNvIGZvciBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgXFxuIDE5NzpcXHRcXHQgIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLiBJdCBkaWZmZXJzIGZyb20gdGhlIExCTEMgc2NoZWR1bGluZ1xcbiAxOTg6XFx0XFx0ICBhcyBmb2xsb3dzOiB0aGUgbG9hZCBiYWxhbmNlciBtYWludGFpbnMgbWFwcGluZ3MgZnJvbSBhIHRhcmdldFxcbiAxOTk6XFx0XFx0ICB0byBhIHNldCBvZiBzZXJ2ZXIgbm9kZXMgdGhhdCBjYW4gc2VydmUgdGhlIHRhcmdldC4gUmVxdWVzdHMgZm9yXFxuIDIwMDpcXHRcXHQgIGEgdGFyZ2V0IGFyZSBhc3NpZ25lZCB0byB0aGUgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSB0YXJnZXQnc1xcbiAyMDE6XFx0XFx0ICBzZXJ2ZXIgc2V0LiBJZiBhbGwgdGhlIG5vZGUgaW4gdGhlIHNlcnZlciBzZXQgYXJlIG92ZXIgbG9hZGVkLFxcbiAyMDI6XFx0XFx0ICBpdCBwaWNrcyB1cCBhIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgY2x1c3RlciBhbmQgYWRkcyBpdFxcbiAyMDM6XFx0XFx0ICBpbiB0aGUgc2V2ZXIgc2V0IGZvciB0aGUgdGFyZ2V0LiBJZiB0aGUgc2VydmVyIHNldCBoYXMgbm90IGJlZW5cXG4gMjA0OlxcdFxcdCAgbW9kaWZpZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSwgdGhlIG1vc3QgbG9hZGVkIG5vZGUgaXMgcmVtb3ZlZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo0Mi42OTYyODMwNDVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNzkwOTg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW55ICpleHBsaWNpdCogZGVwZW5kZW5jaWVzIGxpc3RlZCBiZXlvbmQgd2hhdCBpdCBpbmhlcml0cyBmcm9tIHRoZSBgSVBfVlNgIG1lbnVjb25maWcuIFRoYXQncyBhIGxpdHRsZSB1bnVzdWFsLCBJJ2QgZXhwZWN0IHRvIHNlZSBhdCBsZWFzdCBhIGZldy4uLiBDb3VsZCBiZSBhIGJpdCByaXNreS4gVG8gY29uZmlybSB0aGlzLCBJIHNob3VsZCBkaWcgaW50byB0aGUgYElQX1ZTYCBtZW51Y29uZmlnIGl0c2VsZiBhbmQgc2VlIGlmIGl0J3MgaW1wbGljaXRseSBwdWxsaW5nIGluIGFueSBjcml0aWNhbCBjb21wb25lbnRzIHRoYXQgKnRoaXMqIGNvZGUgcmVsaWVzIG9uLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzbid0IGdvaW5nIHRvIGNhdXNlIGFueSB1bmludGVuZGVkIGJ1aWxkIHByb2JsZW1zIGRvd24gdGhlIGxpbmUgb3IgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIGBJUF9WU2AgaXMgZGlzYWJsZWQuIFRpbWUgdG8gaW52ZXN0aWdhdGUgdGhhdCBjb25maWcgb3B0aW9uLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjQ2LjAyNDE5NjIxNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBJUCBWaXJ0dWFsIFNlcnZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRtZW51Y29uZmlnIElQX1ZTXFxuICAgNjpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSVAgVmlydHVhbCBTZXJ2ZXIgc3VwcG9ydCB3aWxsIGxldCB5b3UgYnVpbGQgYSBoaWdoLXBlcmZvcm1hbmNlXFxuICAxMTpcXHRcXHQgIHZpcnR1YWwgc2VydmVyIGJhc2VkIG9uIGNsdXN0ZXIgb2YgdHdvIG9yIG1vcmUgcmVhbCBzZXJ2ZXJzLiBUaGlzXFxuICAxMjpcXHRcXHQgIG9wdGlvbiBtdXN0IGJlIGVuYWJsZWQgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGUgY2x1c3RlcmVkIGNvbXB1dGVyc1xcbiAgMTM6XFx0XFx0ICB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIGludGVyY2VwdGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyB0byBhXFxuICAxNDpcXHRcXHQgIHNpbmdsZSBJUCBhZGRyZXNzIGFuZCBzY2hlZHVsaW5nIHRoZW0gdG8gcmVhbCBzZXJ2ZXJzLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRocmVlIHJlcXVlc3QgZGlzcGF0Y2hpbmcgdGVjaG5pcXVlcyBhcmUgaW1wbGVtZW50ZWQsIHRoZXkgYXJlXFxuICAxNzpcXHRcXHQgIHZpcnR1YWwgc2VydmVyIHZpYSBOQVQsIHZpcnR1YWwgc2VydmVyIHZpYSB0dW5uZWxpbmcgYW5kIHZpcnR1YWxcXG4gIDE4OlxcdFxcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxcbiAgMTk6XFx0XFx0ICBiZSB1c2VkIHRvIGNob29zZSB3aGljaCBzZXJ2ZXIgdGhlIGNvbm5lY3Rpb24gaXMgZGlyZWN0ZWQgdG8sXFxuICAyMDpcXHRcXHQgIHRodXMgbG9hZCBiYWxhbmNpbmcgY2FuIGJlIGFjaGlldmVkIGFtb25nIHRoZSBzZXJ2ZXJzLiAgRm9yIG1vcmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6NDYuMDI0Mjg0OTQ3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNjk1MTQzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogSVBWUyBhbmQgdGhlIExCTENSIFNjaGVkdWxlcioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byBmdXp6aW5nIGBJUF9WU2AsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAuIFRoYXQncyBleHBlY3RlZCwgYnV0IGdvb2QgdG8gY29uZmlybS4gV2UgbmVlZCB0byBtYWtlIHN1cmUgYm90aCBgSVBfVlNgIGFuZCBzcGVjaWZpY2FsbHkgYElQX1ZTX0xCTENSYCBhcmUgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4gXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHdoYXQncyBhY3R1YWxseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIGFuZCB0aHVzIGZ1enphYmxlLiBJJ20gZm9jdXNpbmcgb24gYGlwX3ZzX2xibGNyX25ld2AgaW5pdGlhbGx5LiBTaW5jZSBJUFZTIGlzIGNvbmZpZ3VyZWQgdmlhIG5ldGxpbmsgb3IgYHNldHNvY2tvcHRgLCBJIG5lZWQgdG8gc2VlIGlmIHRoZSBzY2hlZHVsZXIgaXMgaW52b2tlZCB3aGVuIGEgcGFja2V0IGFycml2ZXMgYXQgYSB2aXJ0dWFsIHNlcnZpY2UuIFllcywgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gVGhpcyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdtIHF1aWNrbHkgZG91YmxlLWNoZWNraW5nIGZvciBhbnkgb3RoZXIgcmVxdWlyZWQgY29uZmlncy4gQWxyaWdodCwgYE5FVEZJTFRFUmAgYW5kIGBJTkVUYCBhcmUgc3RhbmRhcmQgcHJlcmVxdWlzaXRlcy4gVGhlbiB3ZSBoYXZlIHRoZSBzcGVjaWZpYyBvbmVzOiBgSVBfVlNgIGFuZCBgSVBfVlNfTEJMQ1JgLiBHb3QgaXQuXG5cbk9rYXksIGxldCdzIGxpc3QgbXkgRm9jdXNTeW1ib2xzOlxuKiAgIGBpcF92c19sYmxjcl9zY2hlZHVsZWBcbiogICBgaXBfdnNfc2NoZWR1bGVgXG5cbkFoLCBhIHF1aWNrIHJlYWxpdHkgY2hlY2shIGBpcF92c19sYmxjcl9uZXdgIGlzICpzdGF0aWMgaW5saW5lKiwgc28gaXQgd29uJ3QgaGF2ZSBpdHMgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0J3MgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHN5bWJvbCByZXNvbHV0aW9uLiBIb3dldmVyLCBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlzIHN0YXRpYywgKmJ1dCogaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0IHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIEFuZCBgaXBfdnNfc2NoZWR1bGVgIGlzIGV4cG9ydGVkLCBzbyBpdCdzIGdvb2QgdG8gZ28gYXMgd2VsbC5cblxuTGV0IG1lIGdvIGJhY2sgYW5kIGRvdWJsZSBjaGVjayBgaXBfdnNfbGJsY3JfbmV3YCBqdXN0IGluIHRoZSBzb3VyY2UsIHdoaWNoIGlzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2AgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MjQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo1Mi4wOTM4MDQ0NDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTc1MjI1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfbGJsY3JfbmV3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OD1zdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19sYmxjcl9lbnRyeSAqXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MzU5OmlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNjAtXFx0XFx0dTE2IGFmLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTY0Nz1pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzA3LVxcdGlmICghdGJsLVxcdTAwM2VkZWFkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjcwODpcXHRcXHRpcF92c19sYmxjcl9uZXcodGJsLCBcXHUwMDI2aXBoLVxcdTAwM2VkYWRkciwgc3ZjLVxcdTAwM2VhZiwgZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzA5LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzdmMtXFx1MDAzZXNjaGVkX2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo1My40MTEzMzE4NzlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0OTU0NTAxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBMQkxDUiBTY2hlZHVsZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgaXBfdnNfbGJsY3JfbmV3YCBpcyBkZWZpbmVkIGFzIGBzdGF0aWMgaW5saW5lYC4gVGhpcyBtZWFucyB0aGF0IGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaXMgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoYXQgaW5saW5lZCBjb2RlIHdpbGwgYWN0dWFsbHkgcmVzaWRlIGFuZCBiZSBleGVjdXRlZC4gS25vd2luZyB0aGlzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLlxuXG5UaGVyZWZvcmUsIEknbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCDigJMgYWJzb2x1dGVseSwgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiBvZiBjcml0aWNhbCBzY2hlZHVsaW5nIGxvZ2ljLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldC4gSSdsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgYnkgc2V0dGluZyBgRm9jdXNTeW1ib2xzYCB0byBgW1wiaXBfdnNfbGJsY3Jfc2NoZWR1bGVcIiwgXCJpcF92c19zY2hlZHVsZVwiXWAuIFRhcmdldGluZyBib3RoIHRoZSBpbW1lZGlhdGUgZnVuY3Rpb24gYW5kIGEgYnJvYWRlciBzY29wZSBvZiBzY2hlZHVsaW5nIGlzIHdpc2UuXG5cbkknbGwgYWxzbyBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb25zIGBbXCJJUF9WU1wiLCBcIklQX1ZTX0xCTENSXCJdYCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYXJlIGFjdGl2ZSBkdXJpbmcgZnV6emluZy5cblxuTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgYm91bmRzIGNoZWNrIHdpdGhpbiBgaXBfdnNfbGJsY3JfbmV3YC4gVGhpcyBjaGVjayBkaXJlY3RseSBhaW1zIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciByZWFkIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgbWF4X3NpemVgIGxpbWl0IHdpdGhpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBjb3JlIHBhcnQgb2YgdGhlIElQVlMgc2NoZWR1bGluZyBsb2dpYywgYW5kIHRoZXJlZm9yZSBjb3VsZCBwb3RlbnRpYWxseSBiZSB0cmlnZ2VyZWQgYW5kIHJlYWNoZWQgd2hlbmV2ZXIgdGhlIHN5c3RlbSBpcyBoYW5kbGluZyBuZXR3b3JrIHRyYWZmaWMgZm9yIGFuIElQVlMgc2VydmljZSBjb25maWd1cmVkIHRvIHVzZSB0aGlzIHNjaGVkdWxlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NjIsIk91dHB1dFRva2VucyI6MTIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjU4LjM2MDg4MDk5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2OTYwMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2NoZWR1bGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBpcF92c19sYmxjcl9uZXdgIHRvIHByZXZlbnQgZXhjZWVkaW5nIGBtYXhfc2l6ZWAgaW4gdGhlIElQVlMgTEJMQ1Igc2NoZWR1bGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBzY2hlZHVsaW5nIGxvZ2ljLCByZWFjaGFibGUgd2hlbiBoYW5kbGluZyBuZXR3b3JrIHRyYWZmaWMgZm9yIGEgY29uZmlndXJlZCBJUFZTIHNlcnZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX0xCTENSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NjaGVkdWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgaXBfdnNfbGJsY3JfbmV3YCB0byBwcmV2ZW50IGV4Y2VlZGluZyBgbWF4X3NpemVgIGluIHRoZSBJUFZTIExCTENSIHNjaGVkdWxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQVlMgc2NoZWR1bGluZyBsb2dpYywgcmVhY2hhYmxlIHdoZW4gaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGZvciBhIGNvbmZpZ3VyZWQgSVBWUyBzZXJ2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo1OC41MDc4NTIzOThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTk1MjE5MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6NTguNTA4NTA5NjA4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyOTk0NTU4MzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIHJlc291cmNlIGxpbWl0IGNoZWNrIChgYXRvbWljX3JlYWQoXFx1MDAyNnRibC1cXHUwMDNlZW50cmllcykgXFx1MDAzZT0gdGJsLVxcdTAwM2VtYXhfc2l6ZWApIHRvIHByZXZlbnQgdW5ib3VuZGVkIGdyb3d0aCBvZiB0aGUgTEJMQ1IgdGFibGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gT09NIG9yIERvUy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2M1YTI5NGE3MTYzZjgzZWJlNmM2MzUxMzc4YjczOTI0MTE1YWM0NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDE2IDE2OjExOjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuaW5kZXggZjUzZjA1Y2VlYTM2Zi4uOTFmYTM5ZWRlYzBiNSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuQEAgLTM2Myw2ICszNjMsOSBAQCBpcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsXG4gXG4gXHRlbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7XG4gXHRpZiAoIWVuKSB7XG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZ0YmwtXHUwMDNlZW50cmllcykgXHUwMDNlPSB0YmwtXHUwMDNlbWF4X3NpemUpXG4rXHRcdFx0cmV0dXJuIE5VTEw7XG4rXG4gXHRcdGVuID0ga21hbGxvY19vYmooKmVuLCBHRlBfQVRPTUlDKTtcbiBcdFx0aWYgKCFlbilcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjU4LjUwODUxMDI3OFoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTI0NTYxODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTEJMQ1IgVGFibGUgUmVzb3VyY2UgTGltaXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2AgYW5kIGl0J3MgaW50cm9kdWNpbmcgYSByZXNvdXJjZSBsaW1pdCBmb3IgdGhlIExCTENSIHRhYmxlLiBJIHNlZSB0aGUgbWFpbiBhZGRpdGlvbiBpcyB0aGlzIGNoZWNrIHdpdGhpbiBgaXBfdnNfbGJsY3JfbmV3KClgOiBgaWYgKGF0b21pY19yZWFkKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKSBcdTAwM2U9IHRibC1cdTAwM2VtYXhfc2l6ZSlgLiBJZiB0aGUgdGFibGUgaXMgZnVsbCwgaXQganVzdCByZXR1cm5zIGBOVUxMYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHdlIGRvbid0IHdhbnQgdW5ib3VuZGVkIGdyb3d0aC4gSXQncyBhIHNlbnNpYmxlIGNoZWNrIHRvIHByZXZlbnQgRG9TLlxuXG5IbW0sIGFtIEkgbWlzc2luZyBhbnl0aGluZz8gRG9lcyB0aGlzIGludHJvZHVjdGlvbiBvcGVuIHNvbWUga2luZCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXR5PyBObywgaXQganVzdCBiYWlscyBpZiBpdCdzIGZ1bGwuIEl0IHJldHVybnMgYE5VTExgLCBzbyB0aGUgY2FsbGVyIHdvdWxkIGhhdmUgdG8gaGFuZGxlIHRoYXQgY29uZGl0aW9uLiBMZXQncyBsb29rIGF0IHRoZSBjb250ZXh0LlxuXG5Ib2xkIG9uLCBpbiB0aGlzIGNvZGUgc25pcHBldDpcblxuYGBgY1xuXHRlbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7XG5cdGlmICghZW4pIHtcblx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpIFx1MDAzZT0gdGJsLVx1MDAzZW1heF9zaXplKVxuXHRcdFx0cmV0dXJuIE5VTEw7XG5cblx0XHRlbiA9IGttYWxsb2Nfb2JqKCplbiwgR0ZQX0FUT01JQyk7XG5cdFx0aWYgKCFlbilcblx0XHRcdHJldHVybiBOVUxMO1xuYGBgXG5cbkknbSB0aHJvd24gYnkgYGttYWxsb2Nfb2JqKCplbiwgR0ZQX0FUT01JQylgLiBUaGF0IGZlZWxzLi4ub2ZmLiBJdCdzIG5vdCBhIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbi4gSXMgaXQgYSBtYWNybz8gRGVmaW5pdGVseSBub3QgYSBuYXRpdmUga2VybmVsIGZ1bmN0aW9uLiBUaGF0J3MgdW51c3VhbC4gSXQncyBzdXBwb3NlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGBlbmAsIHNvIGl0IGlzIHByb2JhYmx5IHNvbWV0aGluZyBsaWtlIGBrbWFsbG9jKHNpemVvZigqZW4pLCBHRlBfQVRPTUlDKWA/IFRoYXQgd291bGQgbWFrZSBtb3JlIHNlbnNlLCBidXQgdGhlIGNvZGUgc2F5cyBga21hbGxvY19vYmpgLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBnbyBhbmQgbG9vayBhdCB0aGUgc291cmNlIHRvIHNlZSB3aGF0IHRoYXQgaXMsIGJlY2F1c2UgSSBkb24ndCBzZWUgaXQgZG9jdW1lbnRlZCBhcyBhIGtlcm5lbCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEzOjA0LjYzMzA3NTIzNVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MDk0NzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImttYWxsb2Nfb2JqXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTk4PXN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3Rfc2V0X2luc2VydChzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTEwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoxMTA6XFx0ZSA9IGttYWxsb2Nfb2JqKCplLCBHRlBfQVRPTUlDKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xMTEtXFx0aWYgKGUgPT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OT1pcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNjgtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MzY5OlxcdFxcdGVuID0ga21hbGxvY19vYmooKmVuLCBHRlBfQVRPTUlDKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNzAtXFx0XFx0aWYgKCFlbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTUwOD1zdGF0aWMgaW50IGlwX3ZzX2xibGNyX2luaXRfc3ZjKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01MTUtXFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NTE2OlxcdHRibCA9IGttYWxsb2Nfb2JqKCp0YmwpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTUxNy1cXHRpZiAodGJsID09IE5VTEwpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEzOjA0LjgxMTE4NDAwN1oiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjkxODY2NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgTWVtb3J5IFNhZmV0eSoqXG5cbk9rYXksIHNvIGBrbWFsbG9jX29iamAuLi4gcmlnaHQsIHRoYXQncyBsaWtlbHkgYSBtYWNybyBvciBpbmxpbmUgZnVuY3Rpb24uIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpdHMgZGVmaW5pdGlvbiwgcHJvYmFibHkgaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYCBvciBzb21ld2hlcmUgc2ltaWxhciBqdXN0IHRvIGJlIHN1cmUsIGJ1dCB0aGF0J3Mgbm90IHRoZSBjcml0aWNhbCBwYXJ0IGhlcmUuIFRoZSBwYXRjaCBpdHNlbGYgaXMgc2ltcGxlOyBpdCBpbnRyb2R1Y2VzIGEgY2hlY2s6XG5cbmBgYGNcblx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpIFx1MDAzZT0gdGJsLVx1MDAzZW1heF9zaXplKVxuXHRcdFx0cmV0dXJuIE5VTEw7XG5gYGBcblxuRXNzZW50aWFsbHksIGl0J3MganVzdCBhZGRpbmcgYSBib3VuZHMgY2hlY2suIFRoaXMgcHJldmVudHMgYSBkZW5pYWwtb2Ytc2VydmljZSB2dWxuZXJhYmlsaXR5IGJ5IGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgdGFibGUgZW50cmllcy4gVGhhdCdzIGdvb2QsIGEgcmVhc29uYWJsZSBhbmQgZXhwZWN0ZWQgc2FmZXR5IG1lYXN1cmUuIENydWNpYWxseSwgaXQgZG9lc24ndCBzZWVtIHRvIGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBzYWZldHkgaXNzdWVzLiBJdCBkb2Vzbid0IGFwcGVhciB0byBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBkb2Vzbid0IGNoYW5nZSBleGlzdGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb24gcGF0dGVybnMsIGl0IGRvZXNuJ3QgbGVhayBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGl0IGRlZmluaXRlbHkgZG9lc24ndCB1c2UgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXNuJ3QgYSBjYXNlIHdoZXJlIEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyIChLTVNBTikgaXMgbmVlZGVkLiBLQVNBTiBhbmQgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgYmVjYXVzZSBpdCdzIHB1cmVseSBhIERvUyBmaXggYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBtZW1vcnkgY29ycnVwdGlvbiByaXNrcy4gSXQncyBqdXN0IGEgbWF0dGVyIG9mIGxpbWl0aW5nIHRoZSByZXNvdXJjZSB1c2FnZS5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSByZS1leGFtaW5lIHRoZSBjb2RlIGJsb2NrIHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluLi4uXG5cbmBgYGNcbkBAIC0zNjMsNiArMzYzLDkgQEAgaXBfdnNfbGJsY3JfbmV3KHN0cnVjdCBpcF92c19sYmxjcl90YWJsZSAqdGJsLCBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLFxuIFxuIFx0ZW4gPSBpcF92c19sYmxjcl9nZXQoYWYsIHRibCwgZGFkZHIpO1xuIFx0aWYgKCFlbikge1xuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpIFx1MDAzZT0gdGJsLVx1MDAzZW1heF9zaXplKVxuK1x0XHRcdHJldHVybiBOVUxMO1xuK1xuIFx0XHRlbiA9IGttYWxsb2Nfb2JqKCplbiwgR0ZQX0FUT01JQyk7XG4gXHRcdGlmICghZW4pXG4gXHRcdFx0cmV0dXJuIE5VTEw7XG5gYGBcblxuWWVwLCB0aGF0J3MgaXQuIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBhIG1pc3NpbmcgbGltaXQgY2hlY2suIE5vIHJpc2sgb2YgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyB0aGF0IEkgY2FuIHNlZS4gVGhpcyBwYXRjaCBpcyBwZXJmZWN0bHkgZmluZSwgZnJvbSBhIG1lbW9yeSBzYWZldHkgc3RhbmRwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzNiwiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTM6MTEuNTAzMDUyNzUzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIHJlc291cmNlIGxpbWl0IGNoZWNrIChgYXRvbWljX3JlYWQoXFx1MDAyNnRibC1cXHUwMDNlZW50cmllcykgXFx1MDAzZT0gdGJsLVxcdTAwM2VtYXhfc2l6ZWApIHRvIHByZXZlbnQgdW5ib3VuZGVkIGdyb3d0aCBvZiB0aGUgTEJMQ1IgdGFibGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gT09NIG9yIERvUy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSByZXNvdXJjZSBsaW1pdCBjaGVjayAoYGF0b21pY19yZWFkKFxcdTAwMjZ0YmwtXFx1MDAzZWVudHJpZXMpIFxcdTAwM2U9IHRibC1cXHUwMDNlbWF4X3NpemVgKSB0byBwcmV2ZW50IHVuYm91bmRlZCBncm93dGggb2YgdGhlIExCTENSIHRhYmxlLCB3aGljaCBjb3VsZCBsZWFkIHRvIE9PTSBvciBEb1MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowb5r48[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-16 15:29:57 +0000 UTC FinishedAt: 2026-08-16 16:13:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3eb40771c00a8488fa6ed2cc1fe203477908bf38", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_LBLCR" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3eb40771c00a8488fa6ed2cc1fe203477908bf38", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_LBLCR" ], "series_id": "bbe06a83-874a-4647-aedc-9408e9ea8185" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_lblcr_schedule", "ip_vs_schedule" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2NoZWR1bGUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIHJlc291cmNlIGxpbWl0IGNoZWNrIChgYXRvbWljX3JlYWQoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpIFx1MDAzZT0gdGJsLVx1MDAzZW1heF9zaXplYCkgdG8gcHJldmVudCB1bmJvdW5kZWQgZ3Jvd3RoIG9mIHRoZSBMQkxDUiB0YWJsZSwgd2hpY2ggY291bGQgbGVhZCB0byBPT00gb3IgRG9TLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGluIGEgd2F5IHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgc3VmZmljaWVudCBmb3IgdGVzdGluZyB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgaXBfdnNfbGJsY3JfbmV3YCB0byBwcmV2ZW50IGV4Y2VlZGluZyBgbWF4X3NpemVgIGluIHRoZSBJUFZTIExCTENSIHNjaGVkdWxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQVlMgc2NoZWR1bGluZyBsb2dpYywgcmVhY2hhYmxlIHdoZW4gaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGZvciBhIGNvbmZpZ3VyZWQgSVBWUyBzZXJ2aWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjExPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2M1YTI5NGE3MTYzZjgzZWJlNmM2MzUxMzc4YjczOTI0MTE1YWM0NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDE2IDE2OjExOjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbmluZGV4IGY1M2YwNWNlZWEzNmYuLjkxZmEzOWVkZWMwYjUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbkBAIC0zNjMsNiAmIzQzOzM2Myw5IEBAIGlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcbiBcbiBcdGVuID0gaXBfdnNfbGJsY3JfZ2V0KGFmLCB0YmwsIGRhZGRyKTtcbiBcdGlmICghZW4pIHtcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZ0YmwtXHUwMDNlZW50cmllcykgXHUwMDNlPSB0YmwtXHUwMDNlbWF4X3NpemUpXG4mIzQzO1x0XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiBcdFx0ZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpO1xuIFx0XHRpZiAoIWVuKVxuIFx0XHRcdHJldHVybiBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2xibGNyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NjaGVkdWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYGlwX3ZzX2xibGNyX25ld2AgdG8gcHJldmVudCBleGNlZWRpbmcgYG1heF9zaXplYCBpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIHNjaGVkdWxpbmcgbG9naWMsIHJlYWNoYWJsZSB3aGVuIGhhbmRsaW5nIG5ldHdvcmsgdHJhZmZpYyBmb3IgYSBjb25maWd1cmVkIElQVlMgc2VydmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdjNWEyOTRhNzE2M2Y4M2ViZTZjNjM1MTM3OGI3MzkyNDExNWFjNDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAxNiAxNjoxMTo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKaW5kZXggZjUzZjA1Y2VlYTM2Zi4uOTFmYTM5ZWRlYzBiNSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKQEAgLTM2Myw2ICYjNDM7MzYzLDkgQEAgaXBfdnNfbGJsY3JfbmV3KHN0cnVjdCBpcF92c19sYmxjcl90YWJsZSAqdGJsLCBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLAogCiAJZW4gPSBpcF92c19sYmxjcl9nZXQoYWYsIHRibCwgZGFkZHIpOwogCWlmICghZW4pIHsKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO3RibC0mZ3Q7ZW50cmllcykgJmd0Oz0gdGJsLSZndDttYXhfc2l6ZSkKJiM0MzsJCQlyZXR1cm4gTlVMTDsKJiM0MzsKIAkJZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpOwogCQlpZiAoIWVuKQogCQkJcmV0dXJuIE5VTEw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgTEJMQ1IgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtb2RpZnlpbmcgYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jYC4gSXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIGluIGBpcF92c19sYmxjcl9uZXdgIHRoYXQgcHJldmVudHMgdGhlIGNyZWF0aW9uIG9mIG5ldyBlbnRyaWVzIGlmIHRoZSB0YWJsZSBzaXplIChgdGJsLSZndDtlbnRyaWVzYCkgaXMgYWxyZWFkeSBhdCBvciBleGNlZWRpbmcgYHRibC0mZ3Q7bWF4X3NpemVgLiBUaGlzIGlzIGEgY3J1Y2lhbCBhZGRpdGlvbiB0byB0aGUgZmxvdywgYXMgaXQgd291bGQgcG90ZW50aWFsbHkgcHJldmVudCBhIERvUyBzaXR1YXRpb24uCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIGBpcF92c19sYmxjcl9uZXdgIGFuZCB0cmFjZSB3aGVyZSB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIFRoaXMgY2hlY2sgaXMgY3JpdGljYWwsIGJ1dCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9uIG90aGVyIHBhcnRzIG9mIHRoZSBJUFZTIHN5c3RlbT8gSG93IGlzIGBtYXhfc2l6ZWAgYmVpbmcgY29uZmlndXJlZCwgYW5kIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBsaW1pdCAqaXMqIHJlYWNoZWQ/IFdlIG5lZWQgdG8gdmVyaWZ5IHRoZSBjb2RlIHBhdGggdG8gZW5zdXJlIHRoYXQgZXhpc3RpbmcgZW50cmllcyBhcmVuJiMzOTt0IHByZW1hdHVyZWx5IGV2aWN0ZWQsIG9yIGlmIHRoZSBsb2dpYyBpcyBzYWZlIHN1Y2ggdGhhdCBhbGwgdHJhZmZpYyB3aWxsIGZhbGwgdG8gYSBkZWZhdWx0IHZhbHVlLCBvciBhIGNvbmZpZ3VyZWQgdmFsdWUsIHRoYXQgd291bGQgYmUgaWRlYWwuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgaW1wbGljYXRpb25zIGFuZCBpZiBhbnkgbG9nZ2luZyBpcyBpbiBwbGFjZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgbWlnaHQgYmUgY3JlYXRlZCB3aXRoIHRoZSBuZXcgY2hlY2suIElzIHRoZXJlIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdCBkdWUgdG8gdGhpcyBhZGRpdGlvbmFsIGF0b21pYyByZWFkPyBNeSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIGNhbGxzIHRvIHRoZSBmdW5jdGlvbiBhbmQgZnVsbHkgdGVzdCB0aGlzIG5ldyBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19sYmxjcl9uZXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz0zNTg9c3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfbGJsY3JfZW50cnkgKlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MzU5OmlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTM2MC1cdFx0dTE2IGFmLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz02NDc9aXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MDctXHRpZiAoIXRibC1cdTAwM2VkZWFkKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzA4Olx0XHRpcF92c19sYmxjcl9uZXcodGJsLCBcdTAwMjZpcGgtXHUwMDNlZGFkZHIsIHN2Yy1cdTAwM2VhZiwgZGVzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MDktXHRzcGluX3VubG9ja19iaChcdTAwMjZzdmMtXHUwMDNlc2NoZWRfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIExCTENSIFNjaGVkdWxpbmcgQmVoYXZpb3IgaW4gSVBWUyoqCgpPa2F5LCBzbyBJIHNlZSBgaXBfdnNfbGJsY3JfbmV3YCBiZWluZyBjYWxsZWQgc3BlY2lmaWNhbGx5IGZyb20gYGlwX3ZzX2xibGNyX3NjaGVkdWxlYC4gVGhhdCB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGZvciBhIG5ldyBMQkxDUiBjb25uZWN0aW9uIChvciBhdCBsZWFzdCwgdGhlIGluaXRpYWxpemF0aW9uKSBpcyBoYXBwZW5pbmcgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yay4gU2luY2UgaXQmIzM5O3MgbGlua2VkIHRvIHRoZSBzY2hlZHVsZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBkaWN0YXRlIGhvdyBMQkxDUiBvcGVyYXRlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSB1c2VkIGZvciBJUFZTIExCTENSLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHdoYXQgY29udHJvbHMgdGhpcyBuZXcgY29ubmVjdGlvbiBpbnN0YW50aWF0aW9uLCBiZWNhdXNlIHRoZSBzY2hlZHVsaW5nIG11c3QgYmUgcmVseWluZyBvbiBzb21ldGhpbmcgdG8gZGVjaWRlIGlmIHRoaXMgbmV3IGNvbm5lY3Rpb24gaXMgd29ydGggZXN0YWJsaXNoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfbGJsY3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gSVBWUyBDb25maWd1cmF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gTGV0JiMzOTtzIHNlZS4uLkkgbmVlZCB0byBxdWlja2x5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24sIHRoZSBzeW1ib2wsIGZvciBMb2FkIEJhbGFuY2luZyAoTEJMQ1IpIGluc2lkZSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBJUCBWaXJ0dWFsIFNlcnZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBnbyByaWdodCB0byB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvaXB2c2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2UgZm9yIHRoZXNlIG9wdGlvbnMuIExldCYjMzk7cyBnZXQgc2VhcmNoaW5nLi4uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGhvdyB0aGlzIGZlYXR1cmUgaXMgY29udHJvbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtMQkxDUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcdElQX1ZTX0xCTENcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxOTI6Y29uZmlnICBJUF9WU19MQkxDUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDUyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgSVBfVlNfTEJMQ1JgLiBUaGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbGFiZWwtYmFzZWQgY29ubmVjdGlvbiByZXF1ZXN0cywgd2hpY2ggaXMgYSBrZXkgY29uY2VwdC4gUmlnaHQsIGxldCYjMzk7cyBkaXZlIGRlZXBlciBhbmQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIG9mIGBJUF9WU2AgY29uZmlndXJhdGlvbnMgbW9yZSBicm9hZGx5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gYWxsIHRoZSByZWxhdGVkIHNldHRpbmdzLiBUaW1lIHRvIHNlZSB3aGF0IG90aGVyIGBJUF9WU2Agb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoaXMgc3BlY2lmaWMgb25lLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgaW1wbGljYXRpb25zIHRoaXMgc2V0dGluZyBtaWdodCBoYXZlIG9uIHRoZSBvdmVyYWxsIGxvYWQgYmFsYW5jaW5nIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzMQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipBbmFseXppbmcgdGhlIExvYWQgQmFsYW5jaW5nIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBpbiBwbGF5IGhlcmUgYXJlIGNsZWFybHkgcmVsYXRlZCB0byBJUCBWaXJ0dWFsIFNlcnZlciAoSVBWUyksIHNwZWNpZmljYWxseSB0aGUgYElQX1ZTYCBhbmQgYElQX1ZTX0xCTENSYCBzZXR0aW5ncy4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0aGUgc2NoZWR1bGluZyBjb21wb25lbnQg4oCTIGluIHRoaXMgY2FzZSwgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBvdmVyYWxsIGxvYWQgYmFsYW5jaW5nIGZyYW1ld29yaywgc28gdGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byBhc2NlcnRhaW4gaXMgaWYgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgYWZmZWN0cyBob3cgaXQmIzM5O3MgbGlua2VkIGludG8gdGhlIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz01NjQ9c3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo1NjU6X19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNTY2LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz02NDY9c3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjY0NzppcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjQ4LVx0XHQgICAgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTY4My1cdFx0LyogVGhlIGNhY2hlIGVudHJ5IGlzIGludmFsaWQsIHRpbWUgdG8gc2NoZWR1bGUgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjY4NDpcdFx0ZGVzdCA9IF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3ZjKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTY4NS1cdFx0aWYgKCFkZXN0KSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjk4LVx0LyogTm8gY2FjaGUgZW50cnksIHRpbWUgdG8gc2NoZWR1bGUgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjY5OTpcdGRlc3QgPSBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN2Yyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MDAtXHRpZiAoIWRlc3QpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MjItICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo3MjM6c3RhdGljIHN0cnVjdCBpcF92c19zY2hlZHVsZXIgaXBfdnNfbGJsY3Jfc2NoZWR1bGVyID1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcyNC17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzI3LVx0Lm1vZHVsZSA9XHRcdFRISVNfTU9EVUxFLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzI4Olx0Lm5fbGlzdCA9XHRcdExJU1RfSEVBRF9JTklUKGlwX3ZzX2xibGNyX3NjaGVkdWxlci5uX2xpc3QpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzI5LVx0LmluaXRfc2VydmljZSA9XHRcdGlwX3ZzX2xibGNyX2luaXRfc3ZjLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzMwLVx0LmRvbmVfc2VydmljZSA9XHRcdGlwX3ZzX2xibGNyX2RvbmVfc3ZjLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzMxOlx0LnNjaGVkdWxlID1cdFx0aXBfdnNfbGJsY3Jfc2NoZWR1bGUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MzItfTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz03OTU9c3RhdGljIGludCBfX2luaXQgaXBfdnNfbGJsY3JfaW5pdCh2b2lkKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTgwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjgwMzpcdHJldCA9IHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19sYmxjcl9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODA0LVx0aWYgKHJldClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz04MDk9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2xibGNyX2NsZWFudXAodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTgxMC17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo4MTE6XHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19sYmxjcl9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODEyLVx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFx1MDAyNmlwX3ZzX2xibGNyX29wcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNzIKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGlwX3ZzX2xibGNyYCBzY2hlZHVsZXIgaW1wbGVtZW50YXRpb24sIGFuZCBhIGZldyB0aGluZ3MgYXJlIGltbWVkaWF0ZWx5IGNhdGNoaW5nIG15IGF0dGVudGlvbi4gRmlyc3QsIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIHByZXR0eSBzdGFuZGFyZCBmb3IgaW50ZXJuYWwgZnVuY3Rpb25zLiBIb3dldmVyLCBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byB0aGUgYC5zY2hlZHVsZWAgbWVtYmVyIHdpdGhpbiB0aGUgYGlwX3ZzX2xibGNyX3NjaGVkdWxlcmAgc3RydWN0LiBUaGF0JiMzOTtzIGhvdyBpdCYjMzk7cyBiZWluZyBleHBvc2VkIHRvIHRoZSBsYXJnZXIgSVBWUyBmcmFtZXdvcmsuCgpUaGVuLCB0aGUgc2NoZWR1bGVyIGl0c2VsZiBpcyByZWdpc3RlcmVkIHdpdGggdGhlIHN5c3RlbSB1c2luZyBgcmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyYC4gQ2xhc3NpYyByZWdpc3RyYXRpb24gcGF0dGVybi4gQnV0IGl0IGJyaW5ncyB1cCBhIHF1ZXN0aW9uLCBhbmQgaXQmIzM5O3MgYSBjcml0aWNhbCBvbmUgZm9yIG15IGFuYWx5c2lzOiBhcmUgdGhlcmUgYW55ICpub24tc3RhdGljKiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNgPyBJZiB0aGVyZSBhcmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHB1cnBvc2UuIEFyZSB0aGV5IHJlbGF0ZWQgdG8gZXh0ZXJuYWwgQVBJcywgbW9kdWxlIGluaXRpYWxpemF0aW9uLCBvciBwZXJoYXBzIGV2ZW4gc29tZXRoaW5nIG1vcmUgbmVmYXJpb3VzPyBBbnkgZXh0ZXJuYWxseSB2aXNpYmxlIGZ1bmN0aW9uIGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kLiBMZXQmIzM5O3MgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVpfXVthLXpBLVowLTlfXSpcXHMmIzQzO1xcKj9bYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTc2CgkJCQkJCQlvdXRwdXQ6IDc5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyBmb3IgTm9uLVN0YXRpYyBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBhYm91dCB0byBkaXZlIGludG8gdGhpcyBmaWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBzY2FuIGl0IGZvciBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGhpcyBpc24mIzM5O3QgbmVjZXNzYXJpbHkgYSBkZWVwIGNvZGUgcmV2aWV3LCBidXQgbW9yZSBvZiBhIHJhcGlkIGFzc2Vzc21lbnQgZm9yIGEgc3BlY2lmaWMgY29uY2Vybi4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGJyZWFrIGVuY2Fwc3VsYXRpb24sIG9yIHBvdGVudGlhbGx5IGludHJvZHVjZSB1bmludGVuZGVkIHNpZGUgZWZmZWN0cywgZXNwZWNpYWxseSBpZiB0aGlzIGlzIHBhcnQgb2YgYSBsYXJnZXIsIHdlbGwtZGVmaW5lZCBhcmNoaXRlY3R1cmUuIEl0JiMzOTtzIGEgcXVpY2sgdHJpYWdlIHRvIHNlZSBpZiBhbnl0aGluZyBqdW1wcyBvdXQgdGhhdCByZXF1aXJlcyBpbW1lZGlhdGUgYXR0ZW50aW9uIHJlZ2FyZGluZyBvYmplY3QgaW50ZXJhY3Rpb24gb3Igc2hhcmVkIHN0YXRlIGNvbmNlcm5zLiBCYXNpY2FsbHksIGxldCYjMzk7cyBlc3RhYmxpc2ggaWYgdGhlcmUgYXJlIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIHJlbGF0ZWQgdG8gZnVuY3Rpb24gc2NvcGUgYW5kIGltcGFjdC4gVGhpcyBjb3VsZCBzYXZlIGEgbG90IG9mIHRpbWUgbGF0ZXIgYnkgZm9jdXNpbmcgb24gYW55IHBvdGVudGlhbCBpbW1lZGlhdGUgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKFthLXpBLVpfXVthLXpBLVowLTlfXSpcXHMmIzQzOykmIzQzO1xcKj9bYS16QS1aX11bYS16QS1aMC05X10qXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9OTE9c3RydWN0IGlwX3ZzX2Rlc3Rfc2V0IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy05Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjk4OnN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3Rfc2V0X2luc2VydChzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTk5LVx0XHRcdFx0ICBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgYm9vbCBjaGVjaylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xMjItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoxMjM6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfZWxlbV9yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xMjQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTEzMz1pcF92c19kZXN0X3NldF9lcmFzZShzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTQ4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MTQ5OnN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3Rfc2V0X2VyYXNlYWxsKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTUwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xNTktLyogZ2V0IHdlaWdodGVkIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgZGVzdGluYXRpb24gc2V0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoxNjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTYxLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0yMDgtLyogZ2V0IHdlaWdodGVkIG1vc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSBkZXN0aW5hdGlvbiBzZXQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjIwOTpzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9tYXgoc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0yMTAte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTI4OD1zdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2c192YXJzX3RhYmxlW10gPSB7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMjk4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Mjk5OnN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19sYmxjcl9mcmVlKHN0cnVjdCBpcF92c19sYmxjcl9lbnRyeSAqZW4pXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zMDAte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OT1pcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMzk1LSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Mzk2OnN0YXRpYyB2b2lkIGlwX3ZzX2xibGNyX2ZsdXNoKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zOTcte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTQxMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjQxMzpzdGF0aWMgaW50IHN5c2N0bF9sYmxjcl9leHBpcmF0aW9uKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy00MTQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTQyMS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjQyMjpzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfbGJsY3JfZnVsbF9jaGVjayhzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDIzLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy00NTgtICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo0NTk6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfY2hlY2tfZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDYwLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01MDctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo1MDg6c3RhdGljIGludCBpcF92c19sYmxjcl9pbml0X3N2YyhzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNTA5LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01NDYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo1NDc6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfZG9uZV9zdmMoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yylcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTU0OC17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9NzIzPXN0YXRpYyBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyIGlwX3ZzX2xibGNyX3NjaGVkdWxlciA9XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzM3LSNpZmRlZiBDT05GSUdfU1lTQ1RMXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo3Mzg6c3RhdGljIGludCBfX25ldF9pbml0IF9faXBfdnNfbGJsY3JfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03Mzkte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc3Mi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc3MzpzdGF0aWMgdm9pZCBfX25ldF9leGl0IF9faXBfdnNfbGJsY3JfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03NzQte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc4NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc4NTpzdGF0aWMgaW50IF9fbmV0X2luaXQgX19pcF92c19sYmxjcl9pbml0KHN0cnVjdCBuZXQgKm5ldCkgeyByZXR1cm4gMDsgfVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Nzg2OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgX19pcF92c19sYmxjcl9leGl0KHN0cnVjdCBuZXQgKm5ldCkgeyB9XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03ODctXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9NzkwPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXBfdnNfbGJsY3Jfb3BzID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc5NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc5NTpzdGF0aWMgaW50IF9faW5pdCBpcF92c19sYmxjcl9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03OTYte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTgwOC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjgwOTpzdGF0aWMgdm9pZCBfX2V4aXQgaXBfdnNfbGJsY3JfY2xlYW51cCh2b2lkKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODEwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcyOQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBpcF92c19sYmxjci5jYCBTY2hlZHVsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIGZvY3VzZWQgc29sZWx5IG9uIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2AuICBBbGwgdGhlIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmaWxlIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZyBmb3IgaG93IHdlJiMzOTtsbCBoYW5kbGUgdGhpcyBpbiB0aGUgc3ltYm9sIGFuYWx5c2lzLiAgVGhlIGVudHJ5IHBvaW50IGlzIGNsZWFybHkgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYCwgdGhhdCYjMzk7cyB0aGUgb25lIHJlZ2lzdGVyZWQgYXMgdGhlIGAuc2NoZWR1bGVgIGNhbGxiYWNrIGZvciB0aGUgYGlwX3ZzX2xibGNyX3NjaGVkdWxlcmAuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jYCBhcyB3ZWxsLCBqdXN0IGluIGNhc2UsIGJ1dCB0aGUgcGF0Y2ggc2VlbXMgZm9jdXNlZC4KCk5vdywgdGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiB3ZSB3YW50IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU2luY2UgZXZlcnl0aGluZyBpbiBgaXBfdnNfbGJsY3IuY2AgaXMgYHN0YXRpY2AsIHdlIGhhdmUgYSBkZWNpc2lvbiB0byBtYWtlLiAgVGhlIGd1aWRhbmNlIHN1Z2dlc3RzIHRoYXQgaWYgdGhlcmUgYXJlIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3ZSBjYW4gcHJvdmlkZSBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlmIGl0JiMzOTtzIG5vdCBpbmxpbmVkLiBUaGFua2Z1bGx5LCBpdCYjMzk7cyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBzbyBpdCYjMzk7cyBub3QgaW5saW5lZC4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgcHJvdmlkZSB0aGUgZnVuY3Rpb24gdGhhdCAqY2FsbHMqIHRoZSBzY2hlZHVsZXIsIHdoaWNoIGlzIGxpa2VseSBpbiBgaXBfdnNfY29yZS5jYC4gTGV0JiMzOTtzIGNvbmZpcm0sIHNvIEkmIzM5O2xsIGNoZWNrIGBpcF92c19zY2hlZHVsZWAgbm93IGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjU1OkVYUE9SVF9TWU1CT0wocmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6NTY6RVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTU3LUVYUE9SVF9TWU1CT0woaXBfdnNfcHJvdG9fbmFtZSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYz00MzE9aXBfdnNfc2NoZWRfcGVyc2lzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTE5LVx0aWYgKCFjdCB8fCAhaXBfdnNfY2hlY2tfdGVtcGxhdGUoY3QsIE5VTEwpKSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjUyMDpcdFx0c3RydWN0IGlwX3ZzX3NjaGVkdWxlciAqc2NoZWQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTUyMS1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTYxOD1zdHJ1Y3QgaXBfdnNfY29ubiAqXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjYxOTppcF92c19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MjAtXHQgICAgICAgc3RydWN0IGlwX3ZzX3Byb3RvX2RhdGEgKnBkLCBpbnQgKmlnbm9yZWQsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MjQtXHRzdHJ1Y3QgaXBfdnNfY29ubiAqY3AgPSBOVUxMO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo2MjU6XHRzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyICpzY2hlZDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNjI2LVx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3Q7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwmIzM5O3MgTG9hZCBCYWxhbmNpbmcgU2NoZWR1bGVyKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgaXBfdnNfc2NoZWR1bGVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgbG9va2luZyBsaWtlIGl0JiMzOTtzIG5vdCBhIHN0YXRpYyBlbnRpdHkuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIE5vdywgbGV0JiMzOTtzIHBpdm90IGFuZCBjaGVjayBvdXQgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZXhwb3J0ZWQgb3IganVzdCBhIHN0YXRpYyBwaWVjZSBvZiBjb2RlLiBBaCwgcmlnaHQsIGl0JiMzOTtzIHN0YXRpYy4gQnV0IHdhaXQgYSBtaW51dGUsIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaXMgYWN0dWFsbHkgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBMQkxDUiBzY2hlZHVsZXIsIHdoaWNoIGlzIHRoZSBpbXBvcnRhbnQgcGFydCBoZXJlLgoKSG1tLCB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGlubGluZWQgc2luY2UgaXRzIGFkZHJlc3MgaXMgYWN0dWFsbHkgYmVpbmcgdGFrZW4uIFNlZSwgdGhlIGNvZGUgc2hvd3M6CgpgYGBjCgkuc2NoZWR1bGUgPQkJaXBfdnNfbGJsY3Jfc2NoZWR1bGUsCmBgYAoKVGhhdCBtZWFucyBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgICp3aWxsKiBoYXZlIGl0cyBvd24sIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0IGNoYW5nZXMgdGhpbmdzLiBUaGlzIG9wZW5zIHRoZSBkb29yIHRvIGluY2x1ZGluZyBib3RoIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgYW5kIGBpcF92c19zY2hlZHVsZWAgaW4gb3VyIGFuYWx5c2lzLiBJJiMzOTttIGdvaW5nIHRvIHJldmlzaXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkmIzM5O3ZlIGdvdCBgSVBfVlNgIGFuZCBgSVBfVlNfTEJMQ1JgLCBidXQgYXJlIHRoZXJlIGFueSAqb3RoZXIqIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gQmVzdCB0byBkb3VibGUtY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTX0xCTENSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzk3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgQmFjayBpbnRvIExCTENSIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSByZW1lbWJlciBsb29raW5nIGludG8gYExCTENSYCByZWNlbnRseSwgYW5kIEkgYWN0dWFsbHkgZm91bmQgaXQgaW4gYSBwcmV2aW91cyBzZWFyY2guIExldCYjMzk7cyBzZWUuLi5JIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGNvbmZpZ3VyZWQuIEdpdmVuIGl0cyBsaWtlbHkgc2lnbmlmaWNhbmNlLCB0aGUgS2NvbmZpZyBmaWxlIHdpbGwgcHJvYmFibHkgaGF2ZSB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24uIEkmIzM5O2xsIGp1bXAgc3RyYWlnaHQgdG8gbGluZSAxOTIgKG9yIHRoZXJlYWJvdXRzKSBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGNvbnRleHQgc3Vycm91bmRpbmcgdGhhdC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBkZXRhaWxzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTg1Olx0XHQgIG92ZXJsb2FkZWQgKGl0cyBhY3RpdmUgY29ubmVjdGlvbiBudW1iZXJzIGlzIGxhcmdlciB0aGFuIGl0cyB3ZWlnaHQpXG4gMTg2Olx0XHQgIGFuZCB0aGVyZSBpcyBhIHNlcnZlciBpbiBpdHMgaGFsZiBsb2FkLCB0aGVuIGFsbG9jYXRlIHRoZSB3ZWlnaHRlZFxuIDE4NzpcdFx0ICBsZWFzdC1jb25uZWN0aW9uIHNlcnZlciB0byB0aGlzIElQIGFkZHJlc3MuXG4gMTg4Olx0XG4gMTg5Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTkwOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgIElQX1ZTX0xCTENSXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE5NDpcdFx0aGVscFxuIDE5NTpcdFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcbiAxOTY6XHRcdCAgYWxnb3JpdGhtIGlzIGFsc28gZm9yIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyBcbiAxOTc6XHRcdCAgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuIEl0IGRpZmZlcnMgZnJvbSB0aGUgTEJMQyBzY2hlZHVsaW5nXG4gMTk4Olx0XHQgIGFzIGZvbGxvd3M6IHRoZSBsb2FkIGJhbGFuY2VyIG1haW50YWlucyBtYXBwaW5ncyBmcm9tIGEgdGFyZ2V0XG4gMTk5Olx0XHQgIHRvIGEgc2V0IG9mIHNlcnZlciBub2RlcyB0aGF0IGNhbiBzZXJ2ZSB0aGUgdGFyZ2V0LiBSZXF1ZXN0cyBmb3JcbiAyMDA6XHRcdCAgYSB0YXJnZXQgYXJlIGFzc2lnbmVkIHRvIHRoZSBsZWFzdC1jb25uZWN0aW9uIG5vZGUgaW4gdGhlIHRhcmdldCYjMzk7c1xuIDIwMTpcdFx0ICBzZXJ2ZXIgc2V0LiBJZiBhbGwgdGhlIG5vZGUgaW4gdGhlIHNlcnZlciBzZXQgYXJlIG92ZXIgbG9hZGVkLFxuIDIwMjpcdFx0ICBpdCBwaWNrcyB1cCBhIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgY2x1c3RlciBhbmQgYWRkcyBpdFxuIDIwMzpcdFx0ICBpbiB0aGUgc2V2ZXIgc2V0IGZvciB0aGUgdGFyZ2V0LiBJZiB0aGUgc2VydmVyIHNldCBoYXMgbm90IGJlZW5cbiAyMDQ6XHRcdCAgbW9kaWZpZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSwgdGhlIG1vc3QgbG9hZGVkIG5vZGUgaXMgcmVtb3ZlZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTcyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55ICpleHBsaWNpdCogZGVwZW5kZW5jaWVzIGxpc3RlZCBiZXlvbmQgd2hhdCBpdCBpbmhlcml0cyBmcm9tIHRoZSBgSVBfVlNgIG1lbnVjb25maWcuIFRoYXQmIzM5O3MgYSBsaXR0bGUgdW51c3VhbCwgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGF0IGxlYXN0IGEgZmV3Li4uIENvdWxkIGJlIGEgYml0IHJpc2t5LiBUbyBjb25maXJtIHRoaXMsIEkgc2hvdWxkIGRpZyBpbnRvIHRoZSBgSVBfVlNgIG1lbnVjb25maWcgaXRzZWxmIGFuZCBzZWUgaWYgaXQmIzM5O3MgaW1wbGljaXRseSBwdWxsaW5nIGluIGFueSBjcml0aWNhbCBjb21wb25lbnRzIHRoYXQgKnRoaXMqIGNvZGUgcmVsaWVzIG9uLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzbiYjMzk7dCBnb2luZyB0byBjYXVzZSBhbnkgdW5pbnRlbmRlZCBidWlsZCBwcm9ibGVtcyBkb3duIHRoZSBsaW5lIG9yIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBpZiBgSVBfVlNgIGlzIGRpc2FibGVkLiBUaW1lIHRvIGludmVzdGlnYXRlIHRoYXQgY29uZmlnIG9wdGlvbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgSVAgVmlydHVhbCBTZXJ2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRtZW51Y29uZmlnIElQX1ZTXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgODpcdFx0ZGVwZW5kcyBvbiAoTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDSz1uKVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJUCBWaXJ0dWFsIFNlcnZlciBzdXBwb3J0IHdpbGwgbGV0IHlvdSBidWlsZCBhIGhpZ2gtcGVyZm9ybWFuY2VcbiAgMTE6XHRcdCAgdmlydHVhbCBzZXJ2ZXIgYmFzZWQgb24gY2x1c3RlciBvZiB0d28gb3IgbW9yZSByZWFsIHNlcnZlcnMuIFRoaXNcbiAgMTI6XHRcdCAgb3B0aW9uIG11c3QgYmUgZW5hYmxlZCBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZSBjbHVzdGVyZWQgY29tcHV0ZXJzXG4gIDEzOlx0XHQgIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgaW50ZXJjZXB0aW5nIGluY29taW5nIGNvbm5lY3Rpb25zIHRvIGFcbiAgMTQ6XHRcdCAgc2luZ2xlIElQIGFkZHJlc3MgYW5kIHNjaGVkdWxpbmcgdGhlbSB0byByZWFsIHNlcnZlcnMuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRocmVlIHJlcXVlc3QgZGlzcGF0Y2hpbmcgdGVjaG5pcXVlcyBhcmUgaW1wbGVtZW50ZWQsIHRoZXkgYXJlXG4gIDE3Olx0XHQgIHZpcnR1YWwgc2VydmVyIHZpYSBOQVQsIHZpcnR1YWwgc2VydmVyIHZpYSB0dW5uZWxpbmcgYW5kIHZpcnR1YWxcbiAgMTg6XHRcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxuICAxOTpcdFx0ICBiZSB1c2VkIHRvIGNob29zZSB3aGljaCBzZXJ2ZXIgdGhlIGNvbm5lY3Rpb24gaXMgZGlyZWN0ZWQgdG8sXG4gIDIwOlx0XHQgIHRodXMgbG9hZCBiYWxhbmNpbmcgY2FuIGJlIGFjaGlldmVkIGFtb25nIHRoZSBzZXJ2ZXJzLiAgRm9yIG1vcmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MjQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneTogSVBWUyBhbmQgdGhlIExCTENSIFNjaGVkdWxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIGZ1enppbmcgYElQX1ZTYCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgZnVuZGFtZW50YWxseSByZWxpZXMgb24gYElORVRgIGFuZCBgTkVURklMVEVSYC4gVGhhdCYjMzk7cyBleHBlY3RlZCwgYnV0IGdvb2QgdG8gY29uZmlybS4gV2UgbmVlZCB0byBtYWtlIHN1cmUgYm90aCBgSVBfVlNgIGFuZCBzcGVjaWZpY2FsbHkgYElQX1ZTX0xCTENSYCBhcmUgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4gCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gd2hhdCYjMzk7cyBhY3R1YWxseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIGFuZCB0aHVzIGZ1enphYmxlLiBJJiMzOTttIGZvY3VzaW5nIG9uIGBpcF92c19sYmxjcl9uZXdgIGluaXRpYWxseS4gU2luY2UgSVBWUyBpcyBjb25maWd1cmVkIHZpYSBuZXRsaW5rIG9yIGBzZXRzb2Nrb3B0YCwgSSBuZWVkIHRvIHNlZSBpZiB0aGUgc2NoZWR1bGVyIGlzIGludm9rZWQgd2hlbiBhIHBhY2tldCBhcnJpdmVzIGF0IGEgdmlydHVhbCBzZXJ2aWNlLiBZZXMsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBUaGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBxdWlja2x5IGRvdWJsZS1jaGVja2luZyBmb3IgYW55IG90aGVyIHJlcXVpcmVkIGNvbmZpZ3MuIEFscmlnaHQsIGBORVRGSUxURVJgIGFuZCBgSU5FVGAgYXJlIHN0YW5kYXJkIHByZXJlcXVpc2l0ZXMuIFRoZW4gd2UgaGF2ZSB0aGUgc3BlY2lmaWMgb25lczogYElQX1ZTYCBhbmQgYElQX1ZTX0xCTENSYC4gR290IGl0LgoKT2theSwgbGV0JiMzOTtzIGxpc3QgbXkgRm9jdXNTeW1ib2xzOgoqICAgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYAoqICAgYGlwX3ZzX3NjaGVkdWxlYAoKQWgsIGEgcXVpY2sgcmVhbGl0eSBjaGVjayEgYGlwX3ZzX2xibGNyX25ld2AgaXMgKnN0YXRpYyBpbmxpbmUqLCBzbyBpdCB3b24mIzM5O3QgaGF2ZSBpdHMgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0JiMzOTtzIGdvb2QgdG8ga2VlcCBpbiBtaW5kIGZvciBzeW1ib2wgcmVzb2x1dGlvbi4gSG93ZXZlciwgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYCBpcyBzdGF0aWMsICpidXQqIGl0cyBhZGRyZXNzIGlzIHRha2VuLCBzbyBpdCBzaG91bGQgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBBbmQgYGlwX3ZzX3NjaGVkdWxlYCBpcyBleHBvcnRlZCwgc28gaXQmIzM5O3MgZ29vZCB0byBnbyBhcyB3ZWxsLgoKTGV0IG1lIGdvIGJhY2sgYW5kIGRvdWJsZSBjaGVjayBgaXBfdnNfbGJsY3JfbmV3YCBqdXN0IGluIHRoZSBzb3VyY2UsIHdoaWNoIGlzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2AgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3ZzX2xibGNyX25ldyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OD1zdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19sYmxjcl9lbnRyeSAqXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzozNTk6aXBfdnNfbGJsY3JfbmV3KHN0cnVjdCBpcF92c19sYmxjcl90YWJsZSAqdGJsLCBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMzYwLVx0XHR1MTYgYWYsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTY0Nz1pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcwNy1cdGlmICghdGJsLVx1MDAzZWRlYWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo3MDg6XHRcdGlwX3ZzX2xibGNyX25ldyh0YmwsIFx1MDAyNmlwaC1cdTAwM2VkYWRkciwgc3ZjLVx1MDAzZWFmLCBkZXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcwOS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnN2Yy1cdTAwM2VzY2hlZF9sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NjIKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBJUFZTIExCTENSIFNjaGVkdWxlciBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYGlwX3ZzX2xibGNyX25ld2AgaXMgZGVmaW5lZCBhcyBgc3RhdGljIGlubGluZWAuIFRoaXMgbWVhbnMgdGhhdCBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlzIHRoZSBmdW5jdGlvbiB3aGVyZSB0aGF0IGlubGluZWQgY29kZSB3aWxsIGFjdHVhbGx5IHJlc2lkZSBhbmQgYmUgZXhlY3V0ZWQuIEtub3dpbmcgdGhpcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4KClRoZXJlZm9yZSwgSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCDigJMgYWJzb2x1dGVseSwgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiBvZiBjcml0aWNhbCBzY2hlZHVsaW5nIGxvZ2ljLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldC4gSSYjMzk7bGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIGJ5IHNldHRpbmcgYEZvY3VzU3ltYm9sc2AgdG8gYFsmIzM0O2lwX3ZzX2xibGNyX3NjaGVkdWxlJiMzNDssICYjMzQ7aXBfdnNfc2NoZWR1bGUmIzM0O11gLiBUYXJnZXRpbmcgYm90aCB0aGUgaW1tZWRpYXRlIGZ1bmN0aW9uIGFuZCBhIGJyb2FkZXIgc2NvcGUgb2Ygc2NoZWR1bGluZyBpcyB3aXNlLgoKSSYjMzk7bGwgYWxzbyBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb25zIGBbJiMzNDtJUF9WUyYjMzQ7LCAmIzM0O0lQX1ZTX0xCTENSJiMzNDtdYCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYXJlIGFjdGl2ZSBkdXJpbmcgZnV6emluZy4KCk15IHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGJvdW5kcyBjaGVjayB3aXRoaW4gYGlwX3ZzX2xibGNyX25ld2AuIFRoaXMgY2hlY2sgZGlyZWN0bHkgYWltcyB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYG1heF9zaXplYCBsaW1pdCB3aXRoaW4gdGhlIElQVlMgTEJMQ1Igc2NoZWR1bGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29yZSBwYXJ0IG9mIHRoZSBJUFZTIHNjaGVkdWxpbmcgbG9naWMsIGFuZCB0aGVyZWZvcmUgY291bGQgcG90ZW50aWFsbHkgYmUgdHJpZ2dlcmVkIGFuZCByZWFjaGVkIHdoZW5ldmVyIHRoZSBzeXN0ZW0gaXMgaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGZvciBhbiBJUFZTIHNlcnZpY2UgY29uZmlndXJlZCB0byB1c2UgdGhpcyBzY2hlZHVsZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2xibGNyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NjaGVkdWxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYGlwX3ZzX2xibGNyX25ld2AgdG8gcHJldmVudCBleGNlZWRpbmcgYG1heF9zaXplYCBpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIHNjaGVkdWxpbmcgbG9naWMsIHJlYWNoYWJsZSB3aGVuIGhhbmRsaW5nIG5ldHdvcmsgdHJhZmZpYyBmb3IgYSBjb25maWd1cmVkIElQVlMgc2VydmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19zY2hlZHVsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBpcF92c19sYmxjcl9uZXdgIHRvIHByZXZlbnQgZXhjZWVkaW5nIGBtYXhfc2l6ZWAgaW4gdGhlIElQVlMgTEJMQ1Igc2NoZWR1bGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBzY2hlZHVsaW5nIGxvZ2ljLCByZWFjaGFibGUgd2hlbiBoYW5kbGluZyBuZXR3b3JrIHRyYWZmaWMgZm9yIGEgY29uZmlndXJlZCBJUFZTIHNlcnZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSByZXNvdXJjZSBsaW1pdCBjaGVjayAoYGF0b21pY19yZWFkKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKSBcdTAwM2U9IHRibC1cdTAwM2VtYXhfc2l6ZWApIHRvIHByZXZlbnQgdW5ib3VuZGVkIGdyb3d0aCBvZiB0aGUgTEJMQ1IgdGFibGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gT09NIG9yIERvUy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdjNWEyOTRhNzE2M2Y4M2ViZTZjNjM1MTM3OGI3MzkyNDExNWFjNDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAxNiAxNjoxMTo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKaW5kZXggZjUzZjA1Y2VlYTM2Zi4uOTFmYTM5ZWRlYzBiNSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMKQEAgLTM2Myw2ICYjNDM7MzYzLDkgQEAgaXBfdnNfbGJsY3JfbmV3KHN0cnVjdCBpcF92c19sYmxjcl90YWJsZSAqdGJsLCBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLAogCiAJZW4gPSBpcF92c19sYmxjcl9nZXQoYWYsIHRibCwgZGFkZHIpOwogCWlmICghZW4pIHsKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO3RibC0mZ3Q7ZW50cmllcykgJmd0Oz0gdGJsLSZndDttYXhfc2l6ZSkKJiM0MzsJCQlyZXR1cm4gTlVMTDsKJiM0MzsKIAkJZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpOwogCQlpZiAoIWVuKQogCQkJcmV0dXJuIE5VTEw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxNjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTEJMQ1IgVGFibGUgUmVzb3VyY2UgTGltaXQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbiBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNgIGFuZCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIHJlc291cmNlIGxpbWl0IGZvciB0aGUgTEJMQ1IgdGFibGUuIEkgc2VlIHRoZSBtYWluIGFkZGl0aW9uIGlzIHRoaXMgY2hlY2sgd2l0aGluIGBpcF92c19sYmxjcl9uZXcoKWA6IGBpZiAoYXRvbWljX3JlYWQoJmFtcDt0YmwtJmd0O2VudHJpZXMpICZndDs9IHRibC0mZ3Q7bWF4X3NpemUpYC4gSWYgdGhlIHRhYmxlIGlzIGZ1bGwsIGl0IGp1c3QgcmV0dXJucyBgTlVMTGAsIHdoaWNoIG1ha2VzIHNlbnNlOyB3ZSBkb24mIzM5O3Qgd2FudCB1bmJvdW5kZWQgZ3Jvd3RoLiBJdCYjMzk7cyBhIHNlbnNpYmxlIGNoZWNrIHRvIHByZXZlbnQgRG9TLgoKSG1tLCBhbSBJIG1pc3NpbmcgYW55dGhpbmc/IERvZXMgdGhpcyBpbnRyb2R1Y3Rpb24gb3BlbiBzb21lIGtpbmQgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0eT8gTm8sIGl0IGp1c3QgYmFpbHMgaWYgaXQmIzM5O3MgZnVsbC4gSXQgcmV0dXJucyBgTlVMTGAsIHNvIHRoZSBjYWxsZXIgd291bGQgaGF2ZSB0byBoYW5kbGUgdGhhdCBjb25kaXRpb24uIExldCYjMzk7cyBsb29rIGF0IHRoZSBjb250ZXh0LgoKSG9sZCBvbiwgaW4gdGhpcyBjb2RlIHNuaXBwZXQ6CgpgYGBjCgllbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7CglpZiAoIWVuKSB7CgkJaWYgKGF0b21pY19yZWFkKCZhbXA7dGJsLSZndDtlbnRyaWVzKSAmZ3Q7PSB0YmwtJmd0O21heF9zaXplKQoJCQlyZXR1cm4gTlVMTDsKCgkJZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpOwoJCWlmICghZW4pCgkJCXJldHVybiBOVUxMOwpgYGAKCkkmIzM5O20gdGhyb3duIGJ5IGBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpYC4gVGhhdCBmZWVscy4uLm9mZi4gSXQmIzM5O3Mgbm90IGEgc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9uLiBJcyBpdCBhIG1hY3JvPyBEZWZpbml0ZWx5IG5vdCBhIG5hdGl2ZSBrZXJuZWwgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdW51c3VhbC4gSXQmIzM5O3Mgc3VwcG9zZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBgZW5gLCBzbyBpdCBpcyBwcm9iYWJseSBzb21ldGhpbmcgbGlrZSBga21hbGxvYyhzaXplb2YoKmVuKSwgR0ZQX0FUT01JQylgPyBUaGF0IHdvdWxkIG1ha2UgbW9yZSBzZW5zZSwgYnV0IHRoZSBjb2RlIHNheXMgYGttYWxsb2Nfb2JqYC4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGdvIGFuZCBsb29rIGF0IHRoZSBzb3VyY2UgdG8gc2VlIHdoYXQgdGhhdCBpcywgYmVjYXVzZSBJIGRvbiYjMzk7dCBzZWUgaXQgZG9jdW1lbnRlZCBhcyBhIGtlcm5lbCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a21hbGxvY19vYmomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz05OD1zdGF0aWMgdm9pZCBpcF92c19kZXN0X3NldF9pbnNlcnQoc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTA5LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MTEwOlx0ZSA9IGttYWxsb2Nfb2JqKCplLCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTExMS1cdGlmIChlID09IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9MzU5PWlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNjgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzozNjk6XHRcdGVuID0ga21hbGxvY19vYmooKmVuLCBHRlBfQVRPTUlDKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTM3MC1cdFx0aWYgKCFlbilcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz01MDg9c3RhdGljIGludCBpcF92c19sYmxjcl9pbml0X3N2YyhzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTUxNS1cdCAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NTE2Olx0dGJsID0ga21hbGxvY19vYmooKnRibCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01MTctXHRpZiAodGJsID09IE5VTEwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMzYKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIE1lbW9yeSBTYWZldHkqKgoKT2theSwgc28gYGttYWxsb2Nfb2JqYC4uLiByaWdodCwgdGhhdCYjMzk7cyBsaWtlbHkgYSBtYWNybyBvciBpbmxpbmUgZnVuY3Rpb24uIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpdHMgZGVmaW5pdGlvbiwgcHJvYmFibHkgaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYCBvciBzb21ld2hlcmUgc2ltaWxhciBqdXN0IHRvIGJlIHN1cmUsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgY3JpdGljYWwgcGFydCBoZXJlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZTsgaXQgaW50cm9kdWNlcyBhIGNoZWNrOgoKYGBgYwoJCWlmIChhdG9taWNfcmVhZCgmYW1wO3RibC0mZ3Q7ZW50cmllcykgJmd0Oz0gdGJsLSZndDttYXhfc2l6ZSkKCQkJcmV0dXJuIE5VTEw7CmBgYAoKRXNzZW50aWFsbHksIGl0JiMzOTtzIGp1c3QgYWRkaW5nIGEgYm91bmRzIGNoZWNrLiBUaGlzIHByZXZlbnRzIGEgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0eSBieSBsaW1pdGluZyB0aGUgbnVtYmVyIG9mIHRhYmxlIGVudHJpZXMuIFRoYXQmIzM5O3MgZ29vZCwgYSByZWFzb25hYmxlIGFuZCBleHBlY3RlZCBzYWZldHkgbWVhc3VyZS4gQ3J1Y2lhbGx5LCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBzYWZldHkgaXNzdWVzLiBJdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgZG9lc24mIzM5O3QgY2hhbmdlIGV4aXN0aW5nIG1lbW9yeSBpbml0aWFsaXphdGlvbiBwYXR0ZXJucywgaXQgZG9lc24mIzM5O3QgbGVhayBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGl0IGRlZmluaXRlbHkgZG9lc24mIzM5O3QgdXNlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KClRoZXJlZm9yZSwgdGhpcyBpc24mIzM5O3QgYSBjYXNlIHdoZXJlIEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyIChLTVNBTikgaXMgbmVlZGVkLiBLQVNBTiBhbmQgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgYmVjYXVzZSBpdCYjMzk7cyBwdXJlbHkgYSBEb1MgZml4IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBjb3JydXB0aW9uIHJpc2tzLiBJdCYjMzk7cyBqdXN0IGEgbWF0dGVyIG9mIGxpbWl0aW5nIHRoZSByZXNvdXJjZSB1c2FnZS4KCkxldCBtZSBqdXN0IHF1aWNrbHkgcmUtZXhhbWluZSB0aGUgY29kZSBibG9jayB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbi4uLgoKYGBgYwpAQCAtMzYzLDYgJiM0MzszNjMsOSBAQCBpcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsCiAKIAllbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7CiAJaWYgKCFlbikgewomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7dGJsLSZndDtlbnRyaWVzKSAmZ3Q7PSB0YmwtJmd0O21heF9zaXplKQomIzQzOwkJCXJldHVybiBOVUxMOwomIzQzOwogCQllbiA9IGttYWxsb2Nfb2JqKCplbiwgR0ZQX0FUT01JQyk7CiAJCWlmICghZW4pCiAJCQlyZXR1cm4gTlVMTDsKYGBgCgpZZXAsIHRoYXQmIzM5O3MgaXQuIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgYSBtaXNzaW5nIGxpbWl0IGNoZWNrLiBObyByaXNrIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgdGhhdCBJIGNhbiBzZWUuIFRoaXMgcGF0Y2ggaXMgcGVyZmVjdGx5IGZpbmUsIGZyb20gYSBtZW1vcnkgc2FmZXR5IHN0YW5kcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgcmVzb3VyY2UgbGltaXQgY2hlY2sgKGBhdG9taWNfcmVhZChcdTAwMjZ0YmwtXHUwMDNlZW50cmllcykgXHUwMDNlPSB0YmwtXHUwMDNlbWF4X3NpemVgKSB0byBwcmV2ZW50IHVuYm91bmRlZCBncm93dGggb2YgdGhlIExCTENSIHRhYmxlLCB3aGljaCBjb3VsZCBsZWFkIHRvIE9PTSBvciBEb1MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHRoaXMgY2hhbmdlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSByZXNvdXJjZSBsaW1pdCBjaGVjayAoYGF0b21pY19yZWFkKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKSBcdTAwM2U9IHRibC1cdTAwM2VtYXhfc2l6ZWApIHRvIHByZXZlbnQgdW5ib3VuZGVkIGdyb3d0aCBvZiB0aGUgTEJMQ1IgdGFibGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gT09NIG9yIERvUy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjExOjU4LjMyMTY5Mzc1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMTgxMzg4NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19MQkxDUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2xibGNyX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zY2hlZHVsZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSByZXNvdXJjZSBsaW1pdCBjaGVjayAoYGF0b21pY19yZWFkKFxcdTAwMjZ0YmwtXFx1MDAzZWVudHJpZXMpIFxcdTAwM2U9IHRibC1cXHUwMDNlbWF4X3NpemVgKSB0byBwcmV2ZW50IHVuYm91bmRlZCBncm93dGggb2YgdGhlIExCTENSIHRhYmxlLCB3aGljaCBjb3VsZCBsZWFkIHRvIE9PTSBvciBEb1MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgdG8gYGlwX3ZzX2xibGNyX25ld2AgdG8gcHJldmVudCBleGNlZWRpbmcgYG1heF9zaXplYCBpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUFZTIHNjaGVkdWxpbmcgbG9naWMsIHJlYWNoYWJsZSB3aGVuIGhhbmRsaW5nIG5ldHdvcmsgdHJhZmZpYyBmb3IgYSBjb25maWd1cmVkIElQVlMgc2VydmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTE6NTguMzIxNzAyNDM2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgzMjM4MTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2M1YTI5NGE3MTYzZjgzZWJlNmM2MzUxMzc4YjczOTI0MTE1YWM0NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAxNiAxNjoxMTo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuaW5kZXggZjUzZjA1Y2VlYTM2Zi4uOTFmYTM5ZWRlYzBiNSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuQEAgLTM2Myw2ICszNjMsOSBAQCBpcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsXFxuIFxcbiBcXHRlbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7XFxuIFxcdGlmICghZW4pIHtcXG4rXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZ0YmwtXFx1MDAzZWVudHJpZXMpIFxcdTAwM2U9IHRibC1cXHUwMDNlbWF4X3NpemUpXFxuK1xcdFxcdFxcdHJldHVybiBOVUxMO1xcbitcXG4gXFx0XFx0ZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpO1xcbiBcXHRcXHRpZiAoIWVuKVxcbiBcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTE6NTkuNzA1Nzg5MDg2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTg4MDIwNTY5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX0xCTENSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NjaGVkdWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgaXBfdnNfbGJsY3JfbmV3YCB0byBwcmV2ZW50IGV4Y2VlZGluZyBgbWF4X3NpemVgIGluIHRoZSBJUFZTIExCTENSIHNjaGVkdWxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQVlMgc2NoZWR1bGluZyBsb2dpYywgcmVhY2hhYmxlIHdoZW4gaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGZvciBhIGNvbmZpZ3VyZWQgSVBWUyBzZXJ2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3YzVhMjk0YTcxNjNmODNlYmU2YzYzNTEzNzhiNzM5MjQxMTVhYzQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMTYgMTY6MTE6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBmNTNmMDVjZWVhMzZmLi45MWZhMzllZGVjMGI1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5AQCAtMzYzLDYgKzM2Myw5IEBAIGlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcbiBcbiBcdGVuID0gaXBfdnNfbGJsY3JfZ2V0KGFmLCB0YmwsIGRhZGRyKTtcbiBcdGlmICghZW4pIHtcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKSBcdTAwM2U9IHRibC1cdTAwM2VtYXhfc2l6ZSlcbitcdFx0XHRyZXR1cm4gTlVMTDtcbitcbiBcdFx0ZW4gPSBrbWFsbG9jX29iaigqZW4sIEdGUF9BVE9NSUMpO1xuIFx0XHRpZiAoIWVuKVxuIFx0XHRcdHJldHVybiBOVUxMO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTE6NTkuNzA1NzkwNDk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4NjAyNjAzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBMQkxDUiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIG1vZGlmeWluZyBgbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNgLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIElQVlMgTEJMQ1Igc2NoZWR1bGVyLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhleSd2ZSBhZGRlZCBhIGNoZWNrIGluIGBpcF92c19sYmxjcl9uZXdgIHRoYXQgcHJldmVudHMgdGhlIGNyZWF0aW9uIG9mIG5ldyBlbnRyaWVzIGlmIHRoZSB0YWJsZSBzaXplIChgdGJsLVx1MDAzZWVudHJpZXNgKSBpcyBhbHJlYWR5IGF0IG9yIGV4Y2VlZGluZyBgdGJsLVx1MDAzZW1heF9zaXplYC4gVGhpcyBpcyBhIGNydWNpYWwgYWRkaXRpb24gdG8gdGhlIGZsb3csIGFzIGl0IHdvdWxkIHBvdGVudGlhbGx5IHByZXZlbnQgYSBEb1Mgc2l0dWF0aW9uLlxuXG5MZXQncyBkaXZlIGludG8gYGlwX3ZzX2xibGNyX25ld2AgYW5kIHRyYWNlIHdoZXJlIHRoaXMgaXMgYmVpbmcgY2FsbGVkIGZyb20uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gVGhpcyBjaGVjayBpcyBjcml0aWNhbCwgYnV0IHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb24gb3RoZXIgcGFydHMgb2YgdGhlIElQVlMgc3lzdGVtPyBIb3cgaXMgYG1heF9zaXplYCBiZWluZyBjb25maWd1cmVkLCBhbmQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGxpbWl0ICppcyogcmVhY2hlZD8gV2UgbmVlZCB0byB2ZXJpZnkgdGhlIGNvZGUgcGF0aCB0byBlbnN1cmUgdGhhdCBleGlzdGluZyBlbnRyaWVzIGFyZW4ndCBwcmVtYXR1cmVseSBldmljdGVkLCBvciBpZiB0aGUgbG9naWMgaXMgc2FmZSBzdWNoIHRoYXQgYWxsIHRyYWZmaWMgd2lsbCBmYWxsIHRvIGEgZGVmYXVsdCB2YWx1ZSwgb3IgYSBjb25maWd1cmVkIHZhbHVlLCB0aGF0IHdvdWxkIGJlIGlkZWFsLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgaW1wbGljYXRpb25zIGFuZCBpZiBhbnkgbG9nZ2luZyBpcyBpbiBwbGFjZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcmFjZSBjb25kaXRpb25zIHRoYXQgbWlnaHQgYmUgY3JlYXRlZCB3aXRoIHRoZSBuZXcgY2hlY2suIElzIHRoZXJlIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdCBkdWUgdG8gdGhpcyBhZGRpdGlvbmFsIGF0b21pYyByZWFkPyBNeSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIGNhbGxzIHRvIHRoZSBmdW5jdGlvbiBhbmQgZnVsbHkgdGVzdCB0aGlzIG5ldyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyOCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjA0LjQ5MTgxOTg4N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDUxMDQ2OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfbGJsY3JfbmV3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OD1zdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19sYmxjcl9lbnRyeSAqXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MzU5OmlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNjAtXFx0XFx0dTE2IGFmLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTY0Nz1pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzA3LVxcdGlmICghdGJsLVxcdTAwM2VkZWFkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjcwODpcXHRcXHRpcF92c19sYmxjcl9uZXcodGJsLCBcXHUwMDI2aXBoLVxcdTAwM2VkYWRkciwgc3ZjLVxcdTAwM2VhZiwgZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzA5LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzdmMtXFx1MDAzZXNjaGVkX2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjowNC41OTY5Mjk1MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTUyNjg1ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIExCTENSIFNjaGVkdWxpbmcgQmVoYXZpb3IgaW4gSVBWUyoqXG5cbk9rYXksIHNvIEkgc2VlIGBpcF92c19sYmxjcl9uZXdgIGJlaW5nIGNhbGxlZCBzcGVjaWZpY2FsbHkgZnJvbSBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIGEgbmV3IExCTENSIGNvbm5lY3Rpb24gKG9yIGF0IGxlYXN0LCB0aGUgaW5pdGlhbGl6YXRpb24pIGlzIGhhcHBlbmluZyB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLiBTaW5jZSBpdCdzIGxpbmtlZCB0byB0aGUgc2NoZWR1bGVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZGljdGF0ZSBob3cgTEJMQ1Igb3BlcmF0ZXMuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgdGhhdCBhcmUgdXNlZCBmb3IgSVBWUyBMQkxDUi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyB3aGF0IGNvbnRyb2xzIHRoaXMgbmV3IGNvbm5lY3Rpb24gaW5zdGFudGlhdGlvbiwgYmVjYXVzZSB0aGUgc2NoZWR1bGluZyBtdXN0IGJlIHJlbHlpbmcgb24gc29tZXRoaW5nIHRvIGRlY2lkZSBpZiB0aGlzIG5ldyBjb25uZWN0aW9uIGlzIHdvcnRoIGVzdGFibGlzaGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjA3LjcxMjIwMDMxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIyODU0OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX2xibGNyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjowNy44MTQ0OTMzNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDUzMTkzNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIElQVlMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gTGV0J3Mgc2VlLi4uSSBuZWVkIHRvIHF1aWNrbHkgbG9jYXRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiwgdGhlIHN5bWJvbCwgZm9yIExvYWQgQmFsYW5jaW5nIChMQkxDUikgaW5zaWRlIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIElQIFZpcnR1YWwgU2VydmVyLiBTcGVjaWZpY2FsbHksIEknbGwgZ28gcmlnaHQgdG8gdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnNgIGRpcmVjdG9yeS4gVGhhdCdzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2UgZm9yIHRoZXNlIG9wdGlvbnMuIExldCdzIGdldCBzZWFyY2hpbmcuLi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaG93IHRoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTM3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6MTEuMjY3NjkxMjUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjYxNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkxCTENSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcXHRJUF9WU19MQkxDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1JcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjoxMS4zNDQ5NjQyMTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTUyOTQ0MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJUFZTIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgSVBfVlNfTEJMQ1JgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBsYWJlbC1iYXNlZCBjb25uZWN0aW9uIHJlcXVlc3RzLCB3aGljaCBpcyBhIGtleSBjb25jZXB0LiBSaWdodCwgbGV0J3MgZGl2ZSBkZWVwZXIgYW5kIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBvZiBgSVBfVlNgIGNvbmZpZ3VyYXRpb25zIG1vcmUgYnJvYWRseS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGFsbCB0aGUgcmVsYXRlZCBzZXR0aW5ncy4gVGltZSB0byBzZWUgd2hhdCBvdGhlciBgSVBfVlNgIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGlzIHNwZWNpZmljIG9uZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgaW1wbGljYXRpb25zIHRoaXMgc2V0dGluZyBtaWdodCBoYXZlIG9uIHRoZSBvdmVyYWxsIGxvYWQgYmFsYW5jaW5nIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6MTQuNDk3OTEyMTYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMxMjMzNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjE0LjYxMTA0MjExNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzIwMDM4MTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipBbmFseXppbmcgdGhlIExvYWQgQmFsYW5jaW5nIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW4gcGxheSBoZXJlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gSVAgVmlydHVhbCBTZXJ2ZXIgKElQVlMpLCBzcGVjaWZpY2FsbHkgdGhlIGBJUF9WU2AgYW5kIGBJUF9WU19MQkxDUmAgc2V0dGluZ3MuIE15IGluaXRpYWwgZm9jdXMgaXMgdGhlIHNjaGVkdWxpbmcgY29tcG9uZW50IOKAkyBpbiB0aGlzIGNhc2UsIGBpcF92c19sYmxjcl9zY2hlZHVsZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgb3ZlcmFsbCBsb2FkIGJhbGFuY2luZyBmcmFtZXdvcmssIHNvIHRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gYXNjZXJ0YWluIGlzIGlmIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGFmZmVjdHMgaG93IGl0J3MgbGlua2VkIGludG8gdGhlIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzMSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjE3LjMzMTA4NDg4MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE4MTUyNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9NTY0PXN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjU2NTpfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNTY2LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTY0Nj1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjY0NzppcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTY0OC1cXHRcXHQgICAgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjgzLVxcdFxcdC8qIFRoZSBjYWNoZSBlbnRyeSBpcyBpbnZhbGlkLCB0aW1lIHRvIHNjaGVkdWxlICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Njg0OlxcdFxcdGRlc3QgPSBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN2Yyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjg1LVxcdFxcdGlmICghZGVzdCkge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNjk4LVxcdC8qIE5vIGNhY2hlIGVudHJ5LCB0aW1lIHRvIHNjaGVkdWxlICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6Njk5OlxcdGRlc3QgPSBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN2Yyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzAwLVxcdGlmICghZGVzdCkge1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzIyLSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjcyMzpzdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19sYmxjcl9zY2hlZHVsZXIgPVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcyNC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MjctXFx0Lm1vZHVsZSA9XFx0XFx0VEhJU19NT0RVTEUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzI4OlxcdC5uX2xpc3QgPVxcdFxcdExJU1RfSEVBRF9JTklUKGlwX3ZzX2xibGNyX3NjaGVkdWxlci5uX2xpc3QpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTcyOS1cXHQuaW5pdF9zZXJ2aWNlID1cXHRcXHRpcF92c19sYmxjcl9pbml0X3N2YyxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03MzAtXFx0LmRvbmVfc2VydmljZSA9XFx0XFx0aXBfdnNfbGJsY3JfZG9uZV9zdmMsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzMxOlxcdC5zY2hlZHVsZSA9XFx0XFx0aXBfdnNfbGJsY3Jfc2NoZWR1bGUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzMyLX07XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz03OTU9c3RhdGljIGludCBfX2luaXQgaXBfdnNfbGJsY3JfaW5pdCh2b2lkKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjgwMzpcXHRyZXQgPSByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXFx1MDAyNmlwX3ZzX2xibGNyX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODA0LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYz04MDk9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX2xibGNyX2NsZWFudXAodm9pZClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy04MTAte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjgxMTpcXHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcXHUwMDI2aXBfdnNfbGJsY3Jfc2NoZWR1bGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy04MTItXFx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFxcdTAwMjZpcF92c19sYmxjcl9vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjoxNy40MTI5MDQyNzJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzNzA1MDYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpcF92c19sYmxjcmAgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uLCBhbmQgYSBmZXcgdGhpbmdzIGFyZSBpbW1lZGlhdGVseSBjYXRjaGluZyBteSBhdHRlbnRpb24uIEZpcnN0LCBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpcyBwcmV0dHkgc3RhbmRhcmQgZm9yIGludGVybmFsIGZ1bmN0aW9ucy4gSG93ZXZlciwgaXQncyBiZWluZyBhc3NpZ25lZCB0byB0aGUgYC5zY2hlZHVsZWAgbWVtYmVyIHdpdGhpbiB0aGUgYGlwX3ZzX2xibGNyX3NjaGVkdWxlcmAgc3RydWN0LiBUaGF0J3MgaG93IGl0J3MgYmVpbmcgZXhwb3NlZCB0byB0aGUgbGFyZ2VyIElQVlMgZnJhbWV3b3JrLlxuXG5UaGVuLCB0aGUgc2NoZWR1bGVyIGl0c2VsZiBpcyByZWdpc3RlcmVkIHdpdGggdGhlIHN5c3RlbSB1c2luZyBgcmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyYC4gQ2xhc3NpYyByZWdpc3RyYXRpb24gcGF0dGVybi4gQnV0IGl0IGJyaW5ncyB1cCBhIHF1ZXN0aW9uLCBhbmQgaXQncyBhIGNyaXRpY2FsIG9uZSBmb3IgbXkgYW5hbHlzaXM6IGFyZSB0aGVyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2A/IElmIHRoZXJlIGFyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcHVycG9zZS4gQXJlIHRoZXkgcmVsYXRlZCB0byBleHRlcm5hbCBBUElzLCBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIG9yIHBlcmhhcHMgZXZlbiBzb21ldGhpbmcgbW9yZSBuZWZhcmlvdXM/IEFueSBleHRlcm5hbGx5IHZpc2libGUgZnVuY3Rpb24gaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQuIExldCdzIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTcyLCJPdXRwdXRUb2tlbnMiOjc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6MjEuMzQ5OTU4NjQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTAzMDI5OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxccytcXFxcKj9bYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjIxLjQxODk5NTM5NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODM5NjE2NzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGZvciBOb24tU3RhdGljIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBhYm91dCB0byBkaXZlIGludG8gdGhpcyBmaWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBzY2FuIGl0IGZvciBub24tc3RhdGljIGZ1bmN0aW9ucy4gVGhpcyBpc24ndCBuZWNlc3NhcmlseSBhIGRlZXAgY29kZSByZXZpZXcsIGJ1dCBtb3JlIG9mIGEgcmFwaWQgYXNzZXNzbWVudCBmb3IgYSBzcGVjaWZpYyBjb25jZXJuLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBicmVhayBlbmNhcHN1bGF0aW9uLCBvciBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMsIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBwYXJ0IG9mIGEgbGFyZ2VyLCB3ZWxsLWRlZmluZWQgYXJjaGl0ZWN0dXJlLiBJdCdzIGEgcXVpY2sgdHJpYWdlIHRvIHNlZSBpZiBhbnl0aGluZyBqdW1wcyBvdXQgdGhhdCByZXF1aXJlcyBpbW1lZGlhdGUgYXR0ZW50aW9uIHJlZ2FyZGluZyBvYmplY3QgaW50ZXJhY3Rpb24gb3Igc2hhcmVkIHN0YXRlIGNvbmNlcm5zLiBCYXNpY2FsbHksIGxldCdzIGVzdGFibGlzaCBpZiB0aGVyZSBhcmUgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MgcmVsYXRlZCB0byBmdW5jdGlvbiBzY29wZSBhbmQgaW1wYWN0LiBUaGlzIGNvdWxkIHNhdmUgYSBsb3Qgb2YgdGltZSBsYXRlciBieSBmb2N1c2luZyBvbiBhbnkgcG90ZW50aWFsIGltbWVkaWF0ZSBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzYsIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjoyOC4yNTg2MTU5OTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMzY1MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFxzKykrXFxcXCo/W2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTkxPXN0cnVjdCBpcF92c19kZXN0X3NldCB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy05Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo5ODpzdGF0aWMgdm9pZCBpcF92c19kZXN0X3NldF9pbnNlcnQoc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtOTktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgYm9vbCBjaGVjaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTEyMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoxMjM6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfZWxlbV9yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMTI0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTEzMz1pcF92c19kZXN0X3NldF9lcmFzZShzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xNDgtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MTQ5OnN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3Rfc2V0X2VyYXNlYWxsKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTE1MC17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xNTktLyogZ2V0IHdlaWdodGVkIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgZGVzdGluYXRpb24gc2V0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MTYwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xNjEte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtMjA4LS8qIGdldCB3ZWlnaHRlZCBtb3N0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgZGVzdGluYXRpb24gc2V0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MjA5OnN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21heChzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0yMTAte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9Mjg4PXN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHZzX3ZhcnNfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTI5OC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoyOTk6c3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2xibGNyX2ZyZWUoc3RydWN0IGlwX3ZzX2xibGNyX2VudHJ5ICplbilcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zMDAte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM9MzU5PWlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTM5NS0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzozOTY6c3RhdGljIHZvaWQgaXBfdnNfbGJsY3JfZmx1c2goc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zOTcte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDEyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjQxMzpzdGF0aWMgaW50IHN5c2N0bF9sYmxjcl9leHBpcmF0aW9uKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDE0LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTQyMS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo0MjI6c3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2xibGNyX2Z1bGxfY2hlY2soc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy00MjMte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDU4LSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjQ1OTpzdGF0aWMgdm9pZCBpcF92c19sYmxjcl9jaGVja19leHBpcmUoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNDYwLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTUwNy1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo1MDg6c3RhdGljIGludCBpcF92c19sYmxjcl9pbml0X3N2YyhzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTUwOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01NDYtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NTQ3OnN0YXRpYyB2b2lkIGlwX3ZzX2xibGNyX2RvbmVfc3ZjKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNTQ4LXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTcyMz1zdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19sYmxjcl9zY2hlZHVsZXIgPVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzM3LSNpZmRlZiBDT05GSUdfU1lTQ1RMXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzM4OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBfX2lwX3ZzX2xibGNyX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTczOS17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03NzItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NzczOnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgX19pcF92c19sYmxjcl9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy03NzQte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzg0LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc4NTpzdGF0aWMgaW50IF9fbmV0X2luaXQgX19pcF92c19sYmxjcl9pbml0KHN0cnVjdCBuZXQgKm5ldCkgeyByZXR1cm4gMDsgfVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjc4NjpzdGF0aWMgdm9pZCBfX25ldF9leGl0IF9faXBfdnNfbGJsY3JfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpIHsgfVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc4Ny1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTc5MD1zdGF0aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIGlwX3ZzX2xibGNyX29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc5NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzo3OTU6c3RhdGljIGludCBfX2luaXQgaXBfdnNfbGJsY3JfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTc5Ni17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy04MDgtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6ODA5OnN0YXRpYyB2b2lkIF9fZXhpdCBpcF92c19sYmxjcl9jbGVhbnVwKHZvaWQpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtODEwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6MjguMzM5OTg3MzQxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjU4MjkzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaXBfdnNfbGJsY3IuY2AgU2NoZWR1bGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgZm9jdXNlZCBzb2xlbHkgb24gYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jYC4gIEFsbCB0aGUgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGZpbGUgYXJlIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnIGZvciBob3cgd2UnbGwgaGFuZGxlIHRoaXMgaW4gdGhlIHN5bWJvbCBhbmFseXNpcy4gIFRoZSBlbnRyeSBwb2ludCBpcyBjbGVhcmx5IGBpcF92c19sYmxjcl9zY2hlZHVsZWAsIHRoYXQncyB0aGUgb25lIHJlZ2lzdGVyZWQgYXMgdGhlIGAuc2NoZWR1bGVgIGNhbGxiYWNrIGZvciB0aGUgYGlwX3ZzX2xibGNyX3NjaGVkdWxlcmAuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jYCBhcyB3ZWxsLCBqdXN0IGluIGNhc2UsIGJ1dCB0aGUgcGF0Y2ggc2VlbXMgZm9jdXNlZC5cblxuTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IHdlIHdhbnQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBTaW5jZSBldmVyeXRoaW5nIGluIGBpcF92c19sYmxjci5jYCBpcyBgc3RhdGljYCwgd2UgaGF2ZSBhIGRlY2lzaW9uIHRvIG1ha2UuICBUaGUgZ3VpZGFuY2Ugc3VnZ2VzdHMgdGhhdCBpZiB0aGVyZSBhcmUgbm8gbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHdlIGNhbiBwcm92aWRlIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaWYgaXQncyBub3QgaW5saW5lZC4gVGhhbmtmdWxseSwgaXQncyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBzbyBpdCdzIG5vdCBpbmxpbmVkLiBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCBwcm92aWRlIHRoZSBmdW5jdGlvbiB0aGF0ICpjYWxscyogdGhlIHNjaGVkdWxlciwgd2hpY2ggaXMgbGlrZWx5IGluIGBpcF92c19jb3JlLmNgLiBMZXQncyBjb25maXJtLCBzbyBJJ2xsIGNoZWNrIGBpcF92c19zY2hlZHVsZWAgbm93IGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyOSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjozNC4wMDU4MTk5NDFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjI1MDY0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c19zY2hlZHVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNTQtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1NTpFWFBPUlRfU1lNQk9MKHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo1NjpFWFBPUlRfU1lNQk9MKHVucmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTU3LUVYUE9SVF9TWU1CT0woaXBfdnNfcHJvdG9fbmFtZSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTQzMT1pcF92c19zY2hlZF9wZXJzaXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTUxOS1cXHRpZiAoIWN0IHx8ICFpcF92c19jaGVja190ZW1wbGF0ZShjdCwgTlVMTCkpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjUyMDpcXHRcXHRzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyICpzY2hlZDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTUyMS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9NjE4PXN0cnVjdCBpcF92c19jb25uICpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjYxOTppcF92c19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNjIwLVxcdCAgICAgICBzdHJ1Y3QgaXBfdnNfcHJvdG9fZGF0YSAqcGQsIGludCAqaWdub3JlZCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtNjI0LVxcdHN0cnVjdCBpcF92c19jb25uICpjcCA9IE5VTEw7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzo2MjU6XFx0c3RydWN0IGlwX3ZzX3NjaGVkdWxlciAqc2NoZWQ7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy02MjYtXFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3Q7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjM0LjExMjA3OTY4NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc5MjU1NTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsJ3MgTG9hZCBCYWxhbmNpbmcgU2NoZWR1bGVyKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGlwX3ZzX3NjaGVkdWxlYCBmdW5jdGlvbiwgYW5kIGl0J3MgbG9va2luZyBsaWtlIGl0J3Mgbm90IGEgc3RhdGljIGVudGl0eS4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBOb3csIGxldCdzIHBpdm90IGFuZCBjaGVjayBvdXQgYGlwX3ZzX2xibGNyX3NjaGVkdWxlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBleHBvcnRlZCBvciBqdXN0IGEgc3RhdGljIHBpZWNlIG9mIGNvZGUuIEFoLCByaWdodCwgaXQncyBzdGF0aWMuIEJ1dCB3YWl0IGEgbWludXRlLCBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlzIGFjdHVhbGx5IHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgTEJMQ1Igc2NoZWR1bGVyLCB3aGljaCBpcyB0aGUgaW1wb3J0YW50IHBhcnQgaGVyZS5cblxuSG1tLCB0aGlzIGlzIGludGVyZXN0aW5nLiBJdCBkb2Vzbid0IHNlZW0gdG8gYmUgaW5saW5lZCBzaW5jZSBpdHMgYWRkcmVzcyBpcyBhY3R1YWxseSBiZWluZyB0YWtlbi4gU2VlLCB0aGUgY29kZSBzaG93czpcblxuYGBgY1xuXHQuc2NoZWR1bGUgPVx0XHRpcF92c19sYmxjcl9zY2hlZHVsZSxcbmBgYFxuXG5UaGF0IG1lYW5zIGBpcF92c19sYmxjcl9zY2hlZHVsZWAgKndpbGwqIGhhdmUgaXRzIG93biwgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQgY2hhbmdlcyB0aGluZ3MuIFRoaXMgb3BlbnMgdGhlIGRvb3IgdG8gaW5jbHVkaW5nIGJvdGggYGlwX3ZzX2xibGNyX3NjaGVkdWxlYCBhbmQgYGlwX3ZzX3NjaGVkdWxlYCBpbiBvdXIgYW5hbHlzaXMuIEknbSBnb2luZyB0byByZXZpc2l0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEkndmUgZ290IGBJUF9WU2AgYW5kIGBJUF9WU19MQkxDUmAsIGJ1dCBhcmUgdGhlcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBCZXN0IHRvIGRvdWJsZS1jaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjozOC42OTEzMzc4OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MDAzNzYzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfTEJMQ1JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjM4LjgwMDM1MDY2M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk1ODQxMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBCYWNrIGludG8gTEJMQ1IgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIEkgcmVtZW1iZXIgbG9va2luZyBpbnRvIGBMQkxDUmAgcmVjZW50bHksIGFuZCBJIGFjdHVhbGx5IGZvdW5kIGl0IGluIGEgcHJldmlvdXMgc2VhcmNoLiBMZXQncyBzZWUuLi5JIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHVuZGVyc3RhbmQgaG93IGl0J3MgY29uZmlndXJlZC4gR2l2ZW4gaXRzIGxpa2VseSBzaWduaWZpY2FuY2UsIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBwcm9iYWJseSBoYXZlIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbi4gSSdsbCBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMTkyIChvciB0aGVyZWFib3V0cykgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBjb250ZXh0IHN1cnJvdW5kaW5nIHRoYXQuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gZGV0YWlscyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzOTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo0Mi42OTYxOTQ1OTVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTg1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTg1OlxcdFxcdCAgb3ZlcmxvYWRlZCAoaXRzIGFjdGl2ZSBjb25uZWN0aW9uIG51bWJlcnMgaXMgbGFyZ2VyIHRoYW4gaXRzIHdlaWdodClcXG4gMTg2OlxcdFxcdCAgYW5kIHRoZXJlIGlzIGEgc2VydmVyIGluIGl0cyBoYWxmIGxvYWQsIHRoZW4gYWxsb2NhdGUgdGhlIHdlaWdodGVkXFxuIDE4NzpcXHRcXHQgIGxlYXN0LWNvbm5lY3Rpb24gc2VydmVyIHRvIHRoaXMgSVAgYWRkcmVzcy5cXG4gMTg4OlxcdFxcbiAxODk6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxcbiAxOTA6XFx0XFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE5MTpcXHRcXG4gMTkyOlxcdGNvbmZpZyAgSVBfVlNfTEJMQ1JcXG4gMTkzOlxcdFxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTk0OlxcdFxcdGhlbHBcXG4gMTk1OlxcdFxcdCAgVGhlIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxuIDE5NjpcXHRcXHQgIGFsZ29yaXRobSBpcyBhbHNvIGZvciBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgXFxuIDE5NzpcXHRcXHQgIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLiBJdCBkaWZmZXJzIGZyb20gdGhlIExCTEMgc2NoZWR1bGluZ1xcbiAxOTg6XFx0XFx0ICBhcyBmb2xsb3dzOiB0aGUgbG9hZCBiYWxhbmNlciBtYWludGFpbnMgbWFwcGluZ3MgZnJvbSBhIHRhcmdldFxcbiAxOTk6XFx0XFx0ICB0byBhIHNldCBvZiBzZXJ2ZXIgbm9kZXMgdGhhdCBjYW4gc2VydmUgdGhlIHRhcmdldC4gUmVxdWVzdHMgZm9yXFxuIDIwMDpcXHRcXHQgIGEgdGFyZ2V0IGFyZSBhc3NpZ25lZCB0byB0aGUgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSB0YXJnZXQnc1xcbiAyMDE6XFx0XFx0ICBzZXJ2ZXIgc2V0LiBJZiBhbGwgdGhlIG5vZGUgaW4gdGhlIHNlcnZlciBzZXQgYXJlIG92ZXIgbG9hZGVkLFxcbiAyMDI6XFx0XFx0ICBpdCBwaWNrcyB1cCBhIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgY2x1c3RlciBhbmQgYWRkcyBpdFxcbiAyMDM6XFx0XFx0ICBpbiB0aGUgc2V2ZXIgc2V0IGZvciB0aGUgdGFyZ2V0LiBJZiB0aGUgc2VydmVyIHNldCBoYXMgbm90IGJlZW5cXG4gMjA0OlxcdFxcdCAgbW9kaWZpZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSwgdGhlIG1vc3QgbG9hZGVkIG5vZGUgaXMgcmVtb3ZlZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo0Mi42OTYyODMwNDVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyNzkwOTg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW55ICpleHBsaWNpdCogZGVwZW5kZW5jaWVzIGxpc3RlZCBiZXlvbmQgd2hhdCBpdCBpbmhlcml0cyBmcm9tIHRoZSBgSVBfVlNgIG1lbnVjb25maWcuIFRoYXQncyBhIGxpdHRsZSB1bnVzdWFsLCBJJ2QgZXhwZWN0IHRvIHNlZSBhdCBsZWFzdCBhIGZldy4uLiBDb3VsZCBiZSBhIGJpdCByaXNreS4gVG8gY29uZmlybSB0aGlzLCBJIHNob3VsZCBkaWcgaW50byB0aGUgYElQX1ZTYCBtZW51Y29uZmlnIGl0c2VsZiBhbmQgc2VlIGlmIGl0J3MgaW1wbGljaXRseSBwdWxsaW5nIGluIGFueSBjcml0aWNhbCBjb21wb25lbnRzIHRoYXQgKnRoaXMqIGNvZGUgcmVsaWVzIG9uLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGlzbid0IGdvaW5nIHRvIGNhdXNlIGFueSB1bmludGVuZGVkIGJ1aWxkIHByb2JsZW1zIGRvd24gdGhlIGxpbmUgb3IgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIGBJUF9WU2AgaXMgZGlzYWJsZWQuIFRpbWUgdG8gaW52ZXN0aWdhdGUgdGhhdCBjb25maWcgb3B0aW9uLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5NzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjQ2LjAyNDE5NjIxNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBJUCBWaXJ0dWFsIFNlcnZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRtZW51Y29uZmlnIElQX1ZTXFxuICAgNjpcXHRcXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSVAgVmlydHVhbCBTZXJ2ZXIgc3VwcG9ydCB3aWxsIGxldCB5b3UgYnVpbGQgYSBoaWdoLXBlcmZvcm1hbmNlXFxuICAxMTpcXHRcXHQgIHZpcnR1YWwgc2VydmVyIGJhc2VkIG9uIGNsdXN0ZXIgb2YgdHdvIG9yIG1vcmUgcmVhbCBzZXJ2ZXJzLiBUaGlzXFxuICAxMjpcXHRcXHQgIG9wdGlvbiBtdXN0IGJlIGVuYWJsZWQgZm9yIGF0IGxlYXN0IG9uZSBvZiB0aGUgY2x1c3RlcmVkIGNvbXB1dGVyc1xcbiAgMTM6XFx0XFx0ICB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIGludGVyY2VwdGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyB0byBhXFxuICAxNDpcXHRcXHQgIHNpbmdsZSBJUCBhZGRyZXNzIGFuZCBzY2hlZHVsaW5nIHRoZW0gdG8gcmVhbCBzZXJ2ZXJzLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRocmVlIHJlcXVlc3QgZGlzcGF0Y2hpbmcgdGVjaG5pcXVlcyBhcmUgaW1wbGVtZW50ZWQsIHRoZXkgYXJlXFxuICAxNzpcXHRcXHQgIHZpcnR1YWwgc2VydmVyIHZpYSBOQVQsIHZpcnR1YWwgc2VydmVyIHZpYSB0dW5uZWxpbmcgYW5kIHZpcnR1YWxcXG4gIDE4OlxcdFxcdCAgc2VydmVyIHZpYSBkaXJlY3Qgcm91dGluZy4gVGhlIHNldmVyYWwgc2NoZWR1bGluZyBhbGdvcml0aG1zIGNhblxcbiAgMTk6XFx0XFx0ICBiZSB1c2VkIHRvIGNob29zZSB3aGljaCBzZXJ2ZXIgdGhlIGNvbm5lY3Rpb24gaXMgZGlyZWN0ZWQgdG8sXFxuICAyMDpcXHRcXHQgIHRodXMgbG9hZCBiYWxhbmNpbmcgY2FuIGJlIGFjaGlldmVkIGFtb25nIHRoZSBzZXJ2ZXJzLiAgRm9yIG1vcmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6NDYuMDI0Mjg0OTQ3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNjk1MTQzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogSVBWUyBhbmQgdGhlIExCTENSIFNjaGVkdWxlcioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byBmdXp6aW5nIGBJUF9WU2AsIGFuZCBpdCBsb29rcyBsaWtlIGl0IGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAuIFRoYXQncyBleHBlY3RlZCwgYnV0IGdvb2QgdG8gY29uZmlybS4gV2UgbmVlZCB0byBtYWtlIHN1cmUgYm90aCBgSVBfVlNgIGFuZCBzcGVjaWZpY2FsbHkgYElQX1ZTX0xCTENSYCBhcmUgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4gXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHdoYXQncyBhY3R1YWxseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIGFuZCB0aHVzIGZ1enphYmxlLiBJJ20gZm9jdXNpbmcgb24gYGlwX3ZzX2xibGNyX25ld2AgaW5pdGlhbGx5LiBTaW5jZSBJUFZTIGlzIGNvbmZpZ3VyZWQgdmlhIG5ldGxpbmsgb3IgYHNldHNvY2tvcHRgLCBJIG5lZWQgdG8gc2VlIGlmIHRoZSBzY2hlZHVsZXIgaXMgaW52b2tlZCB3aGVuIGEgcGFja2V0IGFycml2ZXMgYXQgYSB2aXJ0dWFsIHNlcnZpY2UuIFllcywgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gVGhpcyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdtIHF1aWNrbHkgZG91YmxlLWNoZWNraW5nIGZvciBhbnkgb3RoZXIgcmVxdWlyZWQgY29uZmlncy4gQWxyaWdodCwgYE5FVEZJTFRFUmAgYW5kIGBJTkVUYCBhcmUgc3RhbmRhcmQgcHJlcmVxdWlzaXRlcy4gVGhlbiB3ZSBoYXZlIHRoZSBzcGVjaWZpYyBvbmVzOiBgSVBfVlNgIGFuZCBgSVBfVlNfTEJMQ1JgLiBHb3QgaXQuXG5cbk9rYXksIGxldCdzIGxpc3QgbXkgRm9jdXNTeW1ib2xzOlxuKiAgIGBpcF92c19sYmxjcl9zY2hlZHVsZWBcbiogICBgaXBfdnNfc2NoZWR1bGVgXG5cbkFoLCBhIHF1aWNrIHJlYWxpdHkgY2hlY2shIGBpcF92c19sYmxjcl9uZXdgIGlzICpzdGF0aWMgaW5saW5lKiwgc28gaXQgd29uJ3QgaGF2ZSBpdHMgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0J3MgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHN5bWJvbCByZXNvbHV0aW9uLiBIb3dldmVyLCBgaXBfdnNfbGJsY3Jfc2NoZWR1bGVgIGlzIHN0YXRpYywgKmJ1dCogaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0IHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIEFuZCBgaXBfdnNfc2NoZWR1bGVgIGlzIGV4cG9ydGVkLCBzbyBpdCdzIGdvb2QgdG8gZ28gYXMgd2VsbC5cblxuTGV0IG1lIGdvIGJhY2sgYW5kIGRvdWJsZSBjaGVjayBgaXBfdnNfbGJsY3JfbmV3YCBqdXN0IGluIHRoZSBzb3VyY2UsIHdoaWNoIGlzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2AgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MjQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo1Mi4wOTM4MDQ0NDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTc1MjI1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfbGJsY3JfbmV3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OD1zdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19sYmxjcl9lbnRyeSAqXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MzU5OmlwX3ZzX2xibGNyX25ldyhzdHJ1Y3QgaXBfdnNfbGJsY3JfdGFibGUgKnRibCwgY29uc3QgdW5pb24gbmZfaW5ldF9hZGRyICpkYWRkcixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNjAtXFx0XFx0dTE2IGFmLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTY0Nz1pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzA3LVxcdGlmICghdGJsLVxcdTAwM2VkZWFkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jOjcwODpcXHRcXHRpcF92c19sYmxjcl9uZXcodGJsLCBcXHUwMDI2aXBoLVxcdTAwM2VkYWRkciwgc3ZjLVxcdTAwM2VhZiwgZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMtNzA5LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzdmMtXFx1MDAzZXNjaGVkX2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo1My40MTEzMzE4NzlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0OTU0NTAxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBMQkxDUiBTY2hlZHVsZXIgQ2hhbmdlKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgaXBfdnNfbGJsY3JfbmV3YCBpcyBkZWZpbmVkIGFzIGBzdGF0aWMgaW5saW5lYC4gVGhpcyBtZWFucyB0aGF0IGBpcF92c19sYmxjcl9zY2hlZHVsZWAgaXMgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoYXQgaW5saW5lZCBjb2RlIHdpbGwgYWN0dWFsbHkgcmVzaWRlIGFuZCBiZSBleGVjdXRlZC4gS25vd2luZyB0aGlzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLlxuXG5UaGVyZWZvcmUsIEknbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCDigJMgYWJzb2x1dGVseSwgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiBvZiBjcml0aWNhbCBzY2hlZHVsaW5nIGxvZ2ljLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldC4gSSdsbCBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgYnkgc2V0dGluZyBgRm9jdXNTeW1ib2xzYCB0byBgW1wiaXBfdnNfbGJsY3Jfc2NoZWR1bGVcIiwgXCJpcF92c19zY2hlZHVsZVwiXWAuIFRhcmdldGluZyBib3RoIHRoZSBpbW1lZGlhdGUgZnVuY3Rpb24gYW5kIGEgYnJvYWRlciBzY29wZSBvZiBzY2hlZHVsaW5nIGlzIHdpc2UuXG5cbkknbGwgYWxzbyBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb25zIGBbXCJJUF9WU1wiLCBcIklQX1ZTX0xCTENSXCJdYCB0byBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYXJlIGFjdGl2ZSBkdXJpbmcgZnV6emluZy5cblxuTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgYm91bmRzIGNoZWNrIHdpdGhpbiBgaXBfdnNfbGJsY3JfbmV3YC4gVGhpcyBjaGVjayBkaXJlY3RseSBhaW1zIHRvIHByZXZlbnQgYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciByZWFkIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgbWF4X3NpemVgIGxpbWl0IHdpdGhpbiB0aGUgSVBWUyBMQkxDUiBzY2hlZHVsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBjb3JlIHBhcnQgb2YgdGhlIElQVlMgc2NoZWR1bGluZyBsb2dpYywgYW5kIHRoZXJlZm9yZSBjb3VsZCBwb3RlbnRpYWxseSBiZSB0cmlnZ2VyZWQgYW5kIHJlYWNoZWQgd2hlbmV2ZXIgdGhlIHN5c3RlbSBpcyBoYW5kbGluZyBuZXR3b3JrIHRyYWZmaWMgZm9yIGFuIElQVlMgc2VydmljZSBjb25maWd1cmVkIHRvIHVzZSB0aGlzIHNjaGVkdWxlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NjIsIk91dHB1dFRva2VucyI6MTIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjU4LjM2MDg4MDk5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2OTYwMTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2NoZWR1bGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIHRvIGBpcF92c19sYmxjcl9uZXdgIHRvIHByZXZlbnQgZXhjZWVkaW5nIGBtYXhfc2l6ZWAgaW4gdGhlIElQVlMgTEJMQ1Igc2NoZWR1bGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBWUyBzY2hlZHVsaW5nIGxvZ2ljLCByZWFjaGFibGUgd2hlbiBoYW5kbGluZyBuZXR3b3JrIHRyYWZmaWMgZm9yIGEgY29uZmlndXJlZCBJUFZTIHNlcnZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX0xCTENSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NjaGVkdWxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayB0byBgaXBfdnNfbGJsY3JfbmV3YCB0byBwcmV2ZW50IGV4Y2VlZGluZyBgbWF4X3NpemVgIGluIHRoZSBJUFZTIExCTENSIHNjaGVkdWxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQVlMgc2NoZWR1bGluZyBsb2dpYywgcmVhY2hhYmxlIHdoZW4gaGFuZGxpbmcgbmV0d29yayB0cmFmZmljIGZvciBhIGNvbmZpZ3VyZWQgSVBWUyBzZXJ2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxNjoxMjo1OC41MDc4NTIzOThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTk1MjE5MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTI6NTguNTA4NTA5NjA4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyOTk0NTU4MzY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIHJlc291cmNlIGxpbWl0IGNoZWNrIChgYXRvbWljX3JlYWQoXFx1MDAyNnRibC1cXHUwMDNlZW50cmllcykgXFx1MDAzZT0gdGJsLVxcdTAwM2VtYXhfc2l6ZWApIHRvIHByZXZlbnQgdW5ib3VuZGVkIGdyb3d0aCBvZiB0aGUgTEJMQ1IgdGFibGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gT09NIG9yIERvUy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2M1YTI5NGE3MTYzZjgzZWJlNmM2MzUxMzc4YjczOTI0MTE1YWM0NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDE2IDE2OjExOjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuaW5kZXggZjUzZjA1Y2VlYTM2Zi4uOTFmYTM5ZWRlYzBiNSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuQEAgLTM2Myw2ICszNjMsOSBAQCBpcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsXG4gXG4gXHRlbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7XG4gXHRpZiAoIWVuKSB7XG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZ0YmwtXHUwMDNlZW50cmllcykgXHUwMDNlPSB0YmwtXHUwMDNlbWF4X3NpemUpXG4rXHRcdFx0cmV0dXJuIE5VTEw7XG4rXG4gXHRcdGVuID0ga21hbGxvY19vYmooKmVuLCBHRlBfQVRPTUlDKTtcbiBcdFx0aWYgKCFlbilcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEyOjU4LjUwODUxMDI3OFoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTI0NTYxODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTEJMQ1IgVGFibGUgUmVzb3VyY2UgTGltaXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY2AgYW5kIGl0J3MgaW50cm9kdWNpbmcgYSByZXNvdXJjZSBsaW1pdCBmb3IgdGhlIExCTENSIHRhYmxlLiBJIHNlZSB0aGUgbWFpbiBhZGRpdGlvbiBpcyB0aGlzIGNoZWNrIHdpdGhpbiBgaXBfdnNfbGJsY3JfbmV3KClgOiBgaWYgKGF0b21pY19yZWFkKFx1MDAyNnRibC1cdTAwM2VlbnRyaWVzKSBcdTAwM2U9IHRibC1cdTAwM2VtYXhfc2l6ZSlgLiBJZiB0aGUgdGFibGUgaXMgZnVsbCwgaXQganVzdCByZXR1cm5zIGBOVUxMYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHdlIGRvbid0IHdhbnQgdW5ib3VuZGVkIGdyb3d0aC4gSXQncyBhIHNlbnNpYmxlIGNoZWNrIHRvIHByZXZlbnQgRG9TLlxuXG5IbW0sIGFtIEkgbWlzc2luZyBhbnl0aGluZz8gRG9lcyB0aGlzIGludHJvZHVjdGlvbiBvcGVuIHNvbWUga2luZCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXR5PyBObywgaXQganVzdCBiYWlscyBpZiBpdCdzIGZ1bGwuIEl0IHJldHVybnMgYE5VTExgLCBzbyB0aGUgY2FsbGVyIHdvdWxkIGhhdmUgdG8gaGFuZGxlIHRoYXQgY29uZGl0aW9uLiBMZXQncyBsb29rIGF0IHRoZSBjb250ZXh0LlxuXG5Ib2xkIG9uLCBpbiB0aGlzIGNvZGUgc25pcHBldDpcblxuYGBgY1xuXHRlbiA9IGlwX3ZzX2xibGNyX2dldChhZiwgdGJsLCBkYWRkcik7XG5cdGlmICghZW4pIHtcblx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpIFx1MDAzZT0gdGJsLVx1MDAzZW1heF9zaXplKVxuXHRcdFx0cmV0dXJuIE5VTEw7XG5cblx0XHRlbiA9IGttYWxsb2Nfb2JqKCplbiwgR0ZQX0FUT01JQyk7XG5cdFx0aWYgKCFlbilcblx0XHRcdHJldHVybiBOVUxMO1xuYGBgXG5cbkknbSB0aHJvd24gYnkgYGttYWxsb2Nfb2JqKCplbiwgR0ZQX0FUT01JQylgLiBUaGF0IGZlZWxzLi4ub2ZmLiBJdCdzIG5vdCBhIHN0YW5kYXJkIGtlcm5lbCBmdW5jdGlvbi4gSXMgaXQgYSBtYWNybz8gRGVmaW5pdGVseSBub3QgYSBuYXRpdmUga2VybmVsIGZ1bmN0aW9uLiBUaGF0J3MgdW51c3VhbC4gSXQncyBzdXBwb3NlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGBlbmAsIHNvIGl0IGlzIHByb2JhYmx5IHNvbWV0aGluZyBsaWtlIGBrbWFsbG9jKHNpemVvZigqZW4pLCBHRlBfQVRPTUlDKWA/IFRoYXQgd291bGQgbWFrZSBtb3JlIHNlbnNlLCBidXQgdGhlIGNvZGUgc2F5cyBga21hbGxvY19vYmpgLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBnbyBhbmQgbG9vayBhdCB0aGUgc291cmNlIHRvIHNlZSB3aGF0IHRoYXQgaXMsIGJlY2F1c2UgSSBkb24ndCBzZWUgaXQgZG9jdW1lbnRlZCBhcyBhIGtlcm5lbCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEzOjA0LjYzMzA3NTIzNVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MDk0NzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImttYWxsb2Nfb2JqXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTk4PXN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3Rfc2V0X2luc2VydChzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTEwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYzoxMTA6XFx0ZSA9IGttYWxsb2Nfb2JqKCplLCBHRlBfQVRPTUlDKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0xMTEtXFx0aWYgKGUgPT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTM1OT1pcF92c19sYmxjcl9uZXcoc3RydWN0IGlwX3ZzX2xibGNyX3RhYmxlICp0YmwsIGNvbnN0IHVuaW9uIG5mX2luZXRfYWRkciAqZGFkZHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNjgtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6MzY5OlxcdFxcdGVuID0ga21hbGxvY19vYmooKmVuLCBHRlBfQVRPTUlDKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy0zNzAtXFx0XFx0aWYgKCFlbilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jPTUwOD1zdGF0aWMgaW50IGlwX3ZzX2xibGNyX2luaXRfc3ZjKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYy01MTUtXFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmM6NTE2OlxcdHRibCA9IGttYWxsb2Nfb2JqKCp0YmwpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jLTUxNy1cXHRpZiAodGJsID09IE5VTEwpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE2OjEzOjA0LjgxMTE4NDAwN1oiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjkxODY2NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgTWVtb3J5IFNhZmV0eSoqXG5cbk9rYXksIHNvIGBrbWFsbG9jX29iamAuLi4gcmlnaHQsIHRoYXQncyBsaWtlbHkgYSBtYWNybyBvciBpbmxpbmUgZnVuY3Rpb24uIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpdHMgZGVmaW5pdGlvbiwgcHJvYmFibHkgaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYCBvciBzb21ld2hlcmUgc2ltaWxhciBqdXN0IHRvIGJlIHN1cmUsIGJ1dCB0aGF0J3Mgbm90IHRoZSBjcml0aWNhbCBwYXJ0IGhlcmUuIFRoZSBwYXRjaCBpdHNlbGYgaXMgc2ltcGxlOyBpdCBpbnRyb2R1Y2VzIGEgY2hlY2s6XG5cbmBgYGNcblx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpIFx1MDAzZT0gdGJsLVx1MDAzZW1heF9zaXplKVxuXHRcdFx0cmV0dXJuIE5VTEw7XG5gYGBcblxuRXNzZW50aWFsbHksIGl0J3MganVzdCBhZGRpbmcgYSBib3VuZHMgY2hlY2suIFRoaXMgcHJldmVudHMgYSBkZW5pYWwtb2Ytc2VydmljZSB2dWxuZXJhYmlsaXR5IGJ5IGxpbWl0aW5nIHRoZSBudW1iZXIgb2YgdGFibGUgZW50cmllcy4gVGhhdCdzIGdvb2QsIGEgcmVhc29uYWJsZSBhbmQgZXhwZWN0ZWQgc2FmZXR5IG1lYXN1cmUuIENydWNpYWxseSwgaXQgZG9lc24ndCBzZWVtIHRvIGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBzYWZldHkgaXNzdWVzLiBJdCBkb2Vzbid0IGFwcGVhciB0byBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCBkb2Vzbid0IGNoYW5nZSBleGlzdGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb24gcGF0dGVybnMsIGl0IGRvZXNuJ3QgbGVhayBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGl0IGRlZmluaXRlbHkgZG9lc24ndCB1c2UgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZWZvcmUsIHRoaXMgaXNuJ3QgYSBjYXNlIHdoZXJlIEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyIChLTVNBTikgaXMgbmVlZGVkLiBLQVNBTiBhbmQgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgYmVjYXVzZSBpdCdzIHB1cmVseSBhIERvUyBmaXggYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBtZW1vcnkgY29ycnVwdGlvbiByaXNrcy4gSXQncyBqdXN0IGEgbWF0dGVyIG9mIGxpbWl0aW5nIHRoZSByZXNvdXJjZSB1c2FnZS5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSByZS1leGFtaW5lIHRoZSBjb2RlIGJsb2NrIHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluLi4uXG5cbmBgYGNcbkBAIC0zNjMsNiArMzYzLDkgQEAgaXBfdnNfbGJsY3JfbmV3KHN0cnVjdCBpcF92c19sYmxjcl90YWJsZSAqdGJsLCBjb25zdCB1bmlvbiBuZl9pbmV0X2FkZHIgKmRhZGRyLFxuIFxuIFx0ZW4gPSBpcF92c19sYmxjcl9nZXQoYWYsIHRibCwgZGFkZHIpO1xuIFx0aWYgKCFlbikge1xuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2dGJsLVx1MDAzZWVudHJpZXMpIFx1MDAzZT0gdGJsLVx1MDAzZW1heF9zaXplKVxuK1x0XHRcdHJldHVybiBOVUxMO1xuK1xuIFx0XHRlbiA9IGttYWxsb2Nfb2JqKCplbiwgR0ZQX0FUT01JQyk7XG4gXHRcdGlmICghZW4pXG4gXHRcdFx0cmV0dXJuIE5VTEw7XG5gYGBcblxuWWVwLCB0aGF0J3MgaXQuIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBhIG1pc3NpbmcgbGltaXQgY2hlY2suIE5vIHJpc2sgb2YgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyB0aGF0IEkgY2FuIHNlZS4gVGhpcyBwYXRjaCBpcyBwZXJmZWN0bHkgZmluZSwgZnJvbSBhIG1lbW9yeSBzYWZldHkgc3RhbmRwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzNiwiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTY6MTM6MTEuNTAzMDUyNzUzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIHJlc291cmNlIGxpbWl0IGNoZWNrIChgYXRvbWljX3JlYWQoXFx1MDAyNnRibC1cXHUwMDNlZW50cmllcykgXFx1MDAzZT0gdGJsLVxcdTAwM2VtYXhfc2l6ZWApIHRvIHByZXZlbnQgdW5ib3VuZGVkIGdyb3d0aCBvZiB0aGUgTEJMQ1IgdGFibGUsIHdoaWNoIGNvdWxkIGxlYWQgdG8gT09NIG9yIERvUy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcgdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSByZXNvdXJjZSBsaW1pdCBjaGVjayAoYGF0b21pY19yZWFkKFxcdTAwMjZ0YmwtXFx1MDAzZWVudHJpZXMpIFxcdTAwM2U9IHRibC1cXHUwMDNlbWF4X3NpemVgKSB0byBwcmV2ZW50IHVuYm91bmRlZCBncm93dGggb2YgdGhlIExCTENSIHRhYmxlLCB3aGljaCBjb3VsZCBsZWFkIHRvIE9PTSBvciBEb1MuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50IGZvciB0ZXN0aW5nIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowb5r48[1] Phase: Succeeded StartedAt: 2026-08-16 16:13:23 +0000 UTC FinishedAt: 2026-08-16 16:13:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-16 16:13:23 +0000 UTC FinishedAt: 2026-08-16 16:13:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2] Phase: Succeeded StartedAt: 2026-08-16 16:13:23 +0000 UTC FinishedAt: 2026-08-16 19:56:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-16 16:13:23 +0000 UTC FinishedAt: 2026-08-16 19:56:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-16 16:13:23 +0000 UTC FinishedAt: 2026-08-16 16:13:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-16 16:13:23 +0000 UTC FinishedAt: 2026-08-16 16:13:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowb5r48/series-workflowb5r48-convert-artifact-3332673864/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-16 16:13:33 +0000 UTC FinishedAt: 2026-08-16 16:31:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-16 16:13:33 +0000 UTC FinishedAt: 2026-08-16 16:31:29 +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:*43f3eed6-5ea3-44ed-ae31-9034baf0e617,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-workflowb5r48/series-workflowb5r48-convert-artifact-3332673864/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": "c4baa924-03ee-47ed-92cb-795249b17641", "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-workflowb5r48/series-workflowb5r48-build-action-461536702/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-16 16:13:33 +0000 UTC FinishedAt: 2026-08-16 16:31:19 +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:*43f3eed6-5ea3-44ed-ae31-9034baf0e617,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-workflowb5r48/series-workflowb5r48-convert-artifact-3332673864/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": "c4baa924-03ee-47ed-92cb-795249b17641", "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-workflowb5r48/series-workflowb5r48-build-action-461536702/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-16 16:31:29 +0000 UTC FinishedAt: 2026-08-16 16:31:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-16 16:31:29 +0000 UTC FinishedAt: 2026-08-16 16:31:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-16 16:31:29 +0000 UTC FinishedAt: 2026-08-16 16:31:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-16 16:31:29 +0000 UTC FinishedAt: 2026-08-16 16:31:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowb5r48/series-workflowb5r48-convert-artifact-654652719/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-16 16:31:39 +0000 UTC FinishedAt: 2026-08-16 16:33:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-16 16:31:39 +0000 UTC FinishedAt: 2026-08-16 16:33:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c4baa924-03ee-47ed-92cb-795249b17641,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-workflowb5r48/series-workflowb5r48-build-action-461536702/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-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-16 16:33:23 +0000 UTC FinishedAt: 2026-08-16 16:33:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-16 16:33:23 +0000 UTC FinishedAt: 2026-08-16 16:33:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-16 16:33:23 +0000 UTC FinishedAt: 2026-08-16 16:51:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-16 16:33:23 +0000 UTC FinishedAt: 2026-08-16 16:51:25 +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:*43f3eed6-5ea3-44ed-ae31-9034baf0e617,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-workflowb5r48/series-workflowb5r48-convert-artifact-654652719/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": "c18ada98-3a47-4a89-babc-6ba42b6dca57", "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-workflowb5r48/series-workflowb5r48-build-action-1091895491/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-16 16:33:23 +0000 UTC FinishedAt: 2026-08-16 16:51:15 +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:*43f3eed6-5ea3-44ed-ae31-9034baf0e617,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-workflowb5r48/series-workflowb5r48-convert-artifact-654652719/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": "c18ada98-3a47-4a89-babc-6ba42b6dca57", "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-workflowb5r48/series-workflowb5r48-build-action-1091895491/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-16 16:51:25 +0000 UTC FinishedAt: 2026-08-16 16:51:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-16 16:51:25 +0000 UTC FinishedAt: 2026-08-16 16:51:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-16 16:51:25 +0000 UTC FinishedAt: 2026-08-16 16:53:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-16 16:51:25 +0000 UTC FinishedAt: 2026-08-16 16:53:26 +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:*c18ada98-3a47-4a89-babc-6ba42b6dca57,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-workflowb5r48/series-workflowb5r48-build-action-1091895491/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-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-16 16:53:36 +0000 UTC FinishedAt: 2026-08-16 19:56:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-16 16:53:36 +0000 UTC FinishedAt: 2026-08-16 19:56:12 +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_vs_lblcr_schedule","ip_vs_schedule"],"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:*c4baa924-03ee-47ed-92cb-795249b17641,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c18ada98-3a47-4a89-babc-6ba42b6dca57,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-workflowb5r48/series-workflowb5r48-build-action-461536702/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-workflowb5r48/series-workflowb5r48-build-action-1091895491/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-16 16:53:36 +0000 UTC FinishedAt: 2026-08-16 16:53:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-16 16:53:36 +0000 UTC FinishedAt: 2026-08-16 16:53:40 +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_vs_lblcr_schedule","ip_vs_schedule"],"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-workflowb5r48/series-workflowb5r48-convert-artifact-2975247592/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-16 16:53:36 +0000 UTC FinishedAt: 2026-08-16 16:53:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-16 16:53:36 +0000 UTC FinishedAt: 2026-08-16 16:53:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-16 16:53:36 +0000 UTC FinishedAt: 2026-08-16 16:53:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-16 16:53:46 +0000 UTC FinishedAt: 2026-08-16 19:56:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb5r48[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_lblcr_schedule","ip_vs_schedule"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3eb40771c00a8488fa6ed2cc1fe203477908bf38","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_LBLCR"],"series_id":"bbe06a83-874a-4647-aedc-9408e9ea8185","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-16 16:53:46 +0000 UTC FinishedAt: 2026-08-16 19:56:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c4baa924-03ee-47ed-92cb-795249b17641,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c18ada98-3a47-4a89-babc-6ba42b6dca57,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-workflowb5r48/series-workflowb5r48-build-action-461536702/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-workflowb5r48/series-workflowb5r48-build-action-1091895491/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-workflowb5r48/series-workflowb5r48-convert-artifact-2975247592/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,}