Name: series-workflowzhhbs Phase: Succeeded StartedAt: 2026-07-02 21:31:34 +0000 UTC FinishedAt: 2026-07-03 01:37:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[0] Phase: Succeeded StartedAt: 2026-07-02 21:31:34 +0000 UTC FinishedAt: 2026-07-02 21:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 21:31:34 +0000 UTC FinishedAt: 2026-07-02 21:46:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER" ], "series_id": "5e4b8eed-941c-4223-9115-12b5d537b6da" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_hash_rebuild", "xfrm_set_spdinfo" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc2V0X3NwZGluZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NzcyZmQ0MTc4NzhmMGU3MTBmMGU3NWFjMWNjOTZkZjZlOTI0OWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDIxOjQ0OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uMjYxMmE0MDU1NDJiYmQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTM2Miw3ICYjNDM7MTM2Miw3IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0aWYgKHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2socG9saWN5KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZwb2xpY3ktXHUwMDNlYnlkc3QpO1xuJiM0MztcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNnBvbGljeS1cdTAwM2VieWRzdCk7XG4gXG4gXHRcdG5ld3BvcyA9IE5VTEw7XG4gXHRcdGRpciA9IHhmcm1fcG9saWN5X2lkMmRpcihwb2xpY3ktXHUwMDNlaW5kZXgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc2V0X3NwZGluZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTY3NzJmZDQxNzg3OGYwZTcxMGYwZTc1YWMxY2M5NmRmNmU5MjQ5YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMjE6NDQ6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3BvbGljeS5jIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuYwppbmRleCA3ZWY4NjFhMGU4MjMxYi4uMjYxMmE0MDU1NDJiYmQgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9wb2xpY3kuYwpAQCAtMTM2Miw3ICYjNDM7MTM2Miw3IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJaWYgKHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2socG9saWN5KSkKIAkJCWNvbnRpbnVlOwogCi0JCWhsaXN0X2RlbF9yY3UoJmFtcDtwb2xpY3ktJmd0O2J5ZHN0KTsKJiM0MzsJCWhsaXN0X2RlbF9pbml0X3JjdSgmYW1wO3BvbGljeS0mZ3Q7Ynlkc3QpOwogCiAJCW5ld3BvcyA9IE5VTEw7CiAJCWRpciA9IHhmcm1fcG9saWN5X2lkMmRpcihwb2xpY3ktJmd0O2luZGV4KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgWEZSTSBQb2xpY3kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYHhmcm1faGFzaF9yZWJ1aWxkYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIGEgc2ltcGxlIGJ1dCBwb3RlbnRpYWxseSBjcml0aWNhbCBjaGFuZ2U6IHRoZXkmIzM5O3ZlIHN3YXBwZWQgYGhsaXN0X2RlbF9yY3VgIGZvciBgaGxpc3RfZGVsX2luaXRfcmN1YC4gSG1tLCBzbyB3ZSYjMzk7cmUgaW5pdGlhbGl6aW5nIHRoZSBub2RlIGFmdGVyIGRlbGV0aW5nIGl0IG5vdy4gTWFrZXMgc2Vuc2Ug4oCTIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBtZWFudCB0byBwcm92aWRlIGFkZGl0aW9uYWwgc2FmZXR5LiBJdCYjMzk7cyBhYm91dCBwcmV2ZW50aW5nIGFueSBwb3RlbnRpYWwgaXNzdWVzIGlmIHRoaXMgYHBvbGljeS0mZ3Q7Ynlkc3RgIG5vZGUgaXMgc29tZWhvdyBjaGVja2VkIGFnYWluIGFmdGVyIGRlbGV0aW9uLCBvciBtYXliZSBpZiBpdCYjMzk7cyBlcnJvbmVvdXNseSB0YXJnZXRlZCBmb3IgYW5vdGhlciBkZWxldGlvbi4gSW5pdGlhbGl6aW5nIGl0IGFmdGVyIGRlbGV0aW9uIGVzc2VudGlhbGx5IGNsZWFucyBpdCB1cCBhbmQgZW5zdXJlcyBpdHMgc3RhdGUgaXMgcHJlZGljdGFibGUuCgpJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGB4ZnJtX3BvbGljeS5jYCBhcm91bmQgdGhlIGB4ZnJtX2hhc2hfcmVidWlsZGAgZnVuY3Rpb24gdG8gZnVsbHkgZ3Jhc3AgdGhlIGNvbnRleHQgYW5kIHdoeSB0aGlzIHdhcyBuZWNlc3NhcnkuIEl0IHdvdWxkIGJlIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBjb25jdXJyZW50IGFjY2Vzc2VzIHdpdGhpbiB0aGUgWEZSTSBzdWJzeXN0ZW0uIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoaXMgY2hhbmdlIHdhcyB0cmlnZ2VyZWQgYnkgYSBzcGVjaWZpYyBidWcgcmVwb3J0IG9yIGRpc2NvdmVyZWQgdGhyb3VnaCBzdGF0aWMgYW5hbHlzaXMuIE5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgJiMzOTt3aHkmIzM5OyBiZWhpbmQgdGhlIGNoYW5nZSB0byBnYXVnZSBpdHMgaW1wYWN0IGZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNjU9c3RhdGljIGJvb2wgeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhjb25zdCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbGljeSlcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzUtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyNzY6c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQyMTI9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fcG9saWN5X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI1ODpcdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrLCB4ZnJtX2hhc2hfcmVidWlsZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzOgoKKipBbmFseXppbmcgdGhlIGB4ZnJtX2hhc2hfcmVidWlsZGAgRnVuY3Rpb24qKgoKT2theSwgc28gYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyBydW5uaW5nIGFzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBJbnRlcmVzdGluZywgaXQmIzM5O3Mgbm90IHNvbWUgaW1tZWRpYXRlLCBpbnRlcnJ1cHQtY29udGV4dCB0aGluZy4gQW5kIGl0JiMzOTtzIGluaXRpYWxpemVkIGR1cmluZyBgeGZybV9wb2xpY3lfaW5pdGAsIHdoaWNoIGdpdmVzIG1lIGEgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpZiBJIG5lZWQgdG8gdHJhY2UgaXRzIG9yaWdpbnMuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhhdCBwcmV0dHkgbXVjaCBzY3JlYW1zIGJ1ZyBmaXgsIGFuZCBnaXZlbiB0aGUgY29udGV4dCBJJiMzOTttIGJldHRpbmcgb24gc29tZXRoaW5nIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlLWZyZWUsIG9yIHBlcmhhcHMgYW4gdW5oYXNoZWQgZGF0YSBzdHJ1Y3R1cmUgY2hlY2sgdGhhdCB3YXNuJiMzOTt0IHJvYnVzdCBlbm91Z2guIFRpbWUgdG8gZ2V0IGZhbWlsaWFyIHdpdGggdGhlIGN1cnJlbnQgY29uZmlnIHJlbGF0ZWQgdG8gWEZSTSwgc28gSSBjYW4gdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IHByb2JsZW0gaXQmIzM5O3MgYWRkcmVzc2luZyBhbmQgaG93IHRoZXkmIzM5O3ZlIHRhY2tsZWQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWctNC0jXG5uZXQveGZybS9LY29uZmlnOjU6Y29uZmlnIFhGUk1cbm5ldC94ZnJtL0tjb25maWctNi1cdGJvb2xcbi0tXG5uZXQveGZybS9LY29uZmlnLTEwLVxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXG5uZXQveGZybS9LY29uZmlnLTEyLVx0Ym9vbFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cbm5ldC94ZnJtL0tjb25maWc6MTQ6Y29uZmlnIFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xNS1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy00Mi1cbm5ldC94ZnJtL0tjb25maWc6NDM6Y29uZmlnIFhGUk1fSU5URVJGQUNFXG5uZXQveGZybS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdmlydHVhbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTUwLVxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXG5uZXQveGZybS9LY29uZmlnLTUyLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTYwLVxubmV0L3hmcm0vS2NvbmZpZzo2MTpjb25maWcgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTYyLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBtaWdyYXRlIGRhdGFiYXNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy03MS1cbm5ldC94ZnJtL0tjb25maWc6NzI6Y29uZmlnIFhGUk1fU1RBVElTVElDU1xubmV0L3hmcm0vS2NvbmZpZy03My1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1wmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctODMtIyBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxubmV0L3hmcm0vS2NvbmZpZy04NS1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy05Mi0jIGFsZ29yaXRobXMgdGhhdCBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxubmV0L3hmcm0vS2NvbmZpZzo5Mzpjb25maWcgWEZSTV9FU1Bcbm5ldC94ZnJtL0tjb25maWctOTQtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWctMTA1LVxubmV0L3hmcm0vS2NvbmZpZzoxMDY6Y29uZmlnIFhGUk1fSVBDT01QXG5uZXQveGZybS9LY29uZmlnLTEwNy1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMjU9Y29uZmlnIE5FVF9LRVlfTUlHUkFURVxuLS1cbm5ldC94ZnJtL0tjb25maWctMTQwLVxubmV0L3hmcm0vS2NvbmZpZzoxNDE6Y29uZmlnIFhGUk1fSVBURlNcbm5ldC94ZnJtL0tjb25maWctMTQyLVx0dHJpc3RhdGUgXCYjMzQ7SVBzZWMgSVAtVEZTL0FHR0ZSQUcgKFJGQyA5MzQ3KSBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTE1Ni1cbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXG5uZXQveGZybS9LY29uZmlnLTE1OC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjUzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIFhGUk0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGVsZW1lbnQgaGVyZSBpcyBgWEZSTWAuIEl0JiMzOTtzIGEgc2ltcGxlIGJvb2xlYW4gZmxhZywgb24gb3Igb2ZmLiBCdXQgaXQmIzM5O3MgcmFyZWx5IHNldCBkaXJlY3RseSwgaXNuJiMzOTt0IGl0PyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIGl0JiMzOTtzIHR5cGljYWxseSBicm91Z2h0IGludG8gdGhlIGVuYWJsZWQgc3RhdGUgaW5kaXJlY3RseSwgdXN1YWxseSBieSBvdGhlciwgbW9yZSBncmFudWxhciBvcHRpb25zIGxpa2UgYFhGUk1fVVNFUmAgb3IgdGhpbmdzIHJlbGF0ZWQgdG8gSVBzZWMsIGxpa2UgYElORVRfRVNQYC4KClNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCB0cmlnZ2VycyB0aGUgZW5hYmxpbmcgb2YgYFhGUk1gIGluIHRoaXMgcGFydGljdWxhciBjb250ZXh0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgYnVpbGQgZmxvdy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIHRvIHNlZSB3aGljaCBvZiB0aG9zZSBvdGhlciBmbGFncyBhcmUgaW5mbHVlbmNpbmcgdGhlIHN0YXRlIG9mIGBYRlJNYC4gTGV0JiMzOTtzIHVucmF2ZWwgdGhpcyBhbmQgc2VlIHdoYXQmIzM5O3MgdWx0aW1hdGVseSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBgWEZSTWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xOTQ9Y29uZmlnIElYR0JFX0lQU0VDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xOTgtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTk5Olx0c2VsZWN0IFhGUk1fQUxHT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMDAtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjA9Y29uZmlnIElYR0JFVkZfSVBTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyNC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjU6XHRzZWxlY3QgWEZSTV9BTEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyNi1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMwND1jb25maWcgTkVUX0lQVlRJXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMDctXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZzozMDg6XHRzZWxlY3QgWEZSTVxubmV0L2lwdjQvS2NvbmZpZy0zMDktXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMzk9Y29uZmlnIElORVRfQUhcbm5ldC9pcHY0L0tjb25maWctMzQwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjM0MTpcdHNlbGVjdCBYRlJNX0FIXG5uZXQvaXB2NC9LY29uZmlnLTM0Mi1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWctMzU1LVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvblwmIzM0O1xubmV0L2lwdjQvS2NvbmZpZzozNTY6XHRzZWxlY3QgWEZSTV9FU1Bcbm5ldC9pcHY0L0tjb25maWctMzU3LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzY5PWNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXHRkZXBlbmRzIG9uIElORVRfRVNQXG5uZXQvaXB2NC9LY29uZmlnOjM3MjpcdHNlbGVjdCBYRlJNX09GRkxPQURcbm5ldC9pcHY0L0tjb25maWctMzczLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM4Ni1cdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY0L0tjb25maWc6Mzg3Olx0c2VsZWN0IFhGUk1fRVNQSU5UQ1Bcbm5ldC9pcHY0L0tjb25maWctMzg4LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9Mzk0PWNvbmZpZyBJTkVUX0lQQ09NUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzk2LVx0c2VsZWN0IElORVRfWEZSTV9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWc6Mzk3Olx0c2VsZWN0IFhGUk1fSVBDT01QXG5uZXQvaXB2NC9LY29uZmlnLTM5OC1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTQ3PWNvbmZpZyBJTkVUNl9BSFxubmV0L2lwdjYvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2Ni9LY29uZmlnOjQ5Olx0c2VsZWN0IFhGUk1fQUhcbm5ldC9pcHY2L0tjb25maWctNTAtXHRoZWxwXG4tLVxubmV0L2lwdjYvS2NvbmZpZz02Mj1jb25maWcgSU5FVDZfRVNQXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2Ni9LY29uZmlnOjY0Olx0c2VsZWN0IFhGUk1fRVNQXG5uZXQvaXB2Ni9LY29uZmlnLTY1LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9Nzc9Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXG4tLVxubmV0L2lwdjYvS2NvbmZpZy03OS1cdGRlcGVuZHMgb24gSU5FVDZfRVNQXG5uZXQvaXB2Ni9LY29uZmlnOjgwOlx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxubmV0L2lwdjYvS2NvbmZpZy04MS1cdGRlZmF1bHQgblxuLS1cbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXG4tLVxubmV0L2lwdjYvS2NvbmZpZy05NC1cdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY2L0tjb25maWc6OTU6XHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxubmV0L2lwdjYvS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMDQtXHRzZWxlY3QgSU5FVDZfWEZSTV9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTA1Olx0c2VsZWN0IFhGUk1fSVBDT01QXG5uZXQvaXB2Ni9LY29uZmlnLTEwNi1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTExMj1jb25maWcgSVBWNl9NSVA2XG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IE1vYmlsaXR5XCYjMzQ7XG5uZXQvaXB2Ni9LY29uZmlnOjExNDpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2Ni9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE1MD1jb25maWcgSVBWNl9WVElcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE1My1cdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnOjE1NDpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2Ni9LY29uZmlnLTE1NS1cdGhlbHBcbi0tXG5uZXQveGZybS9LY29uZmlnPTE0PWNvbmZpZyBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTUtXHR0cmlzdGF0ZVxubmV0L3hmcm0vS2NvbmZpZzoxNjpcdHNlbGVjdCBYRlJNXG5uZXQveGZybS9LY29uZmlnLTE3LVx0c2VsZWN0IENSWVBUT1xuLS1cbm5ldC94ZnJtL0tjb25maWc9MjM9Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbm5ldC94ZnJtL0tjb25maWc6MjU6XHRzZWxlY3QgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTI2LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9ODQ9Y29uZmlnIFhGUk1fQUhcbm5ldC94ZnJtL0tjb25maWctODUtXHR0cmlzdGF0ZVxubmV0L3hmcm0vS2NvbmZpZzo4NjpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctODctXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz05Mz1jb25maWcgWEZSTV9FU1Bcbm5ldC94ZnJtL0tjb25maWctOTQtXHR0cmlzdGF0ZVxubmV0L3hmcm0vS2NvbmZpZzo5NTpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctOTYtXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMDY9Y29uZmlnIFhGUk1fSVBDT01QXG5uZXQveGZybS9LY29uZmlnLTEwNy1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjEwODpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTA5LVx0c2VsZWN0IENSWVBUT1xuLS1cbm5ldC94ZnJtL0tjb25maWc9MTEyPWNvbmZpZyBORVRfS0VZXG5uZXQveGZybS9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O1BGX0tFWSBzb2NrZXRzIChkZXByZWNhdGVkKVwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzoxMTQ6XHRzZWxlY3QgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMjctXHRkZXBlbmRzIG9uIE5FVF9LRVlcbm5ldC94ZnJtL0tjb25maWc6MTI4Olx0c2VsZWN0IFhGUk1fTUlHUkFURVxubmV0L3hmcm0vS2NvbmZpZy0xMjktXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY2OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgWEZSTSBVc2VyLVNwYWNlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgWEZSTSBzdWJzeXN0ZW0gaGVyZSwgZm9jdXNpbmcgb24gdGhlIHVzZXItc3BhY2UgY29uZmlndXJhdGlvbiBhc3BlY3QuIEl0IGxvb2tzIGxpa2UgYFhGUk1fVVNFUmAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIHBvaW50LiBJJiMzOTttIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGNvZGUuIE5vdyBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlzIHB1dCB0b2dldGhlci4KCkkgc2VlIHRoYXQgYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyBwYXJ0IG9mIGB4ZnJtX3BvbGljeS5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB3ZSBhcmUgZGVhbGluZyB3aXRoIHBvbGljeSBoZXJlLiBBbmQgdGhpcyB3aG9sZSB0aGluZyBpcyBkZXBlbmRlbnQgb24gYENPTkZJR19YRlJNYCwgb2YgY291cnNlLiBUaW1lIHRvIGRpZyBkZWVwZXIsIHNwZWNpZmljYWxseSBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBjaGVjayBgbmV0L3hmcm0vTWFrZWZpbGVgIHRvIHNlZSBob3cgZXZlcnl0aGluZyBpcyBjb21waWxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0xMj1lbmRpZlxubmV0L3hmcm0vTWFrZWZpbGUtMTMtXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVx0XHQgICAgICB4ZnJtX2lucHV0Lm8geGZybV9vdXRwdXQubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDMzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgd29ya2luZyB0aHJvdWdoIHRoaXM6CgoqKkRpZ2dpbmcgaW50byB0aGUgWEZSTSBTdWJzeXN0ZW0qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgWEZSTSBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgbWFuYWdlZC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19YRlJNYCBpcyB0aGUgY29yZSBvZiBpdCBhbGwuIEdvb2QgdG8ga25vdy4gQW5kIHRvIGVuYWJsZSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24sIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBYRlJNX1VTRVJgIGlzIHNldC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFhGUk0gaGFzaCB0YWJsZSBnZXRzIHJlYnVpbHQuIEl0IGxvb2tzIGxpa2UgYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzIGNhbGxlZCBlaXRoZXIgYnkgYHhmcm1faGFzaF9yZXNpemVgIHdoaWNoIEkgZXhwZWN0IHRvIHNlZSBpbiByZXNwb25zZSB0byBhIGNoYW5nZSBpbiByZXNvdXJjZXMsIGFuZCBieSBgeGZybV9wb2xpY3lfaHRocmVzaC53b3JrYC4gVGhhdCBgcG9saWN5X2h0aHJlc2gud29ya2AgaXMgaW50ZXJlc3RpbmcsIGFuZCBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSAqdGhhdCogaXMgc2NoZWR1bGVkIGZyb20uIEkgd29uZGVyIGlmIHRoaXMgcmVsYXRlcyB0byBtZW1vcnkgcHJlc3N1cmUsIG9yIHBlcmhhcHMgc29tZSBwb2xpY3kgdGhyZXNob2xkcz8gTGV0JiMzOTtzIHRyYWNlIGJhY2sgd2hlcmUgdGhpcyB3b3JrIHF1ZXVlIGl0ZW0gaXMgYWRkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BvbGljeV9odGhyZXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTI3OC1cdHN0cnVjdCBuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxMjc5Olx0XHRcdFx0ICAgICAgIHhmcm0ucG9saWN5X2h0aHJlc2gud29yayk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyODAtXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbDtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyOTEtXHRkbyB7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyOTI6XHRcdHNlcSA9IHJlYWRfc2VxYmVnaW4oXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jayk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyOTMtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyOTQ6XHRcdGxiaXRzNCA9IG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxiaXRzNDtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NTpcdFx0cmJpdHM0ID0gbmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gucmJpdHM0O1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxMjk2Olx0XHRsYml0czYgPSBuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sYml0czY7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyOTc6XHRcdHJiaXRzNiA9IG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLnJiaXRzNjtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5ODpcdH0gd2hpbGUgKHJlYWRfc2VxcmV0cnkoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jaywgc2VxKSk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyOTktXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0xMzk5PXZvaWQgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMC17XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjE0MDE6XHRzY2hlZHVsZV93b3JrKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDAyLX1cbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQyMTI9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fcG9saWN5X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI0Ny1cdH1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI0ODpcdG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxiaXRzNCA9IDMyO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjQ5Olx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gucmJpdHM0ID0gMzI7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTA6XHRuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sYml0czYgPSAxMjg7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTE6XHRuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5yYml0czYgPSAxMjg7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTItXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTM6XHRzZXFsb2NrX2luaXQoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jayk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTQtXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MjU3LVx0SU5JVF9XT1JLKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9oYXNoX3dvcmssIHhmcm1faGFzaF9yZXNpemUpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjU4Olx0SU5JVF9XT1JLKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmssIHhmcm1faGFzaF9yZWJ1aWxkKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1OS1cdHJldHVybiAwO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDI3Mz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm1fbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI3NC17XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNzU6XHRkaXNhYmxlX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI3Ni1cdGZsdXNoX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MzMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVGhpbmtpbmcgVGhyb3VnaCB0aGUgUG9saWN5IEhhc2ggUmVidWlsZCoqCgpSaWdodCwgc28gYHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZGAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSB3aG9sZSBzaGViYW5nLCB0aGUgcmVidWlsZCBvZiB0aGUgcG9saWN5IGhhc2guIE9rYXksIG5vdyBJIGNhbiBzdGFydCB0byB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgYW5kIHRoZSBwb3RlbnRpYWwgdXNlIGNhc2VzIGZvciBzY2hlZHVsaW5nIHRoaXMgcmVidWlsZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLiBMZXQmIzM5O3Mgc2VlLi4uIHdoZW4gd291bGQgdGhpcyBiZSB0cmlnZ2VyZWQ/IFdoYXQgYXJlIHRoZSBmYWN0b3JzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgdGhpcyBwcm9jZXNzPyBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGxvYWQgb24gdGhlIHN5c3RlbSwgdGhlIHBvdGVudGlhbCBjb250ZW50aW9uLCBhbmQgdGhlIGltcGFjdCB0aGlzIHJlYnVpbGQgd291bGQgaGF2ZSBvbiBvdmVyYWxsIHBlcmZvcm1hbmNlLiBJIHNob3VsZCBiZSBhYmxlIHRvIGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHN1cnJvdW5kaW5nIGNvZGUgdG8gZmlndXJlIG91dCB0aGUgdHJpZ2dlcmluZyBjb25kaXRpb25zIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gQmFzZWQgb24gaG93IHRoYXQmIzM5O3MgaW1wbGVtZW50ZWQsIEkgY2FuIGFudGljaXBhdGUgaG93IHRoaXMgaW1wYWN0cyBvdGhlciBjb21wb25lbnRzIHdpdGhpbiB0aGUgc3lzdGVtLiBVbmRlcnN0YW5kaW5nIHRoaXMgcmVidWlsZCBwcm9jZXNzIGlzIGNyaXRpY2FsIGZvciBkaWFnbm9zaW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBwZXJmb3JtYW5jZSBpc3N1ZXMgcmVsYXRlZCB0byBJUHNlYyBwb2xpY3kgbWFuYWdlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hmcm0uaD0xODk2PWludCB4ZnJtX3BvbGljeV9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsIGJvb2wgdGFza192YWxpZCk7XG5pbmNsdWRlL25ldC94ZnJtLmg6MTg5Nzp2b2lkIHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChzdHJ1Y3QgbmV0ICpuZXQpO1xuaW5jbHVkZS9uZXQveGZybS5oLTE4OTgtdTMyIHhmcm1fZ2V0X2FjcXNlcSh2b2lkKTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTM5OC1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTM5OTp2b2lkIHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDAte1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMi19XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjE0MDM6RVhQT1JUX1NZTUJPTCh4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDA0LVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTE2OTQ9c3RhdGljIGludCB4ZnJtX3NldF9zcGRpbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE3NDEtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxNzQyOlx0XHR4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQobmV0KTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE3NDMtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwOTcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYRlJNIFBvbGljeSBTZXR1cCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhyb3VnaCB0aGlzIGNvZGUgcmVsYXRlZCB0byBYRlJNIHBvbGljeSBtYW5hZ2VtZW50LiBJdCBsb29rcyBsaWtlIGB4ZnJtX3NldF9zcGRpbmZvYCBpcyBjYWxsaW5nIGB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRgLCB3aGljaCBpcyBleHBlY3RlZCBiZWhhdmlvciBmb3IgcG9saWN5IGNoYW5nZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gSSByZW1lbWJlciBgeGZybV9zZXRfc3BkaW5mb2AgcmVzaWRlcyBpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiAgQWhhLCBhbmQgdGhhdCBmaWxlIGdldHMgY29tcGlsZWQgKm9ubHkqIHdoZW4gYENPTkZJR19YRlJNX1VTRVJgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHBvaW50LiBJZiBJJiMzOTttIHVzaW5nIHRoZSB1c2VyIHNwYWNlIFhGUk0gaW50ZXJmYWNlLCB3aGljaCBJIGFtLCBgWEZSTV9VU0VSYCBpcyBhYnNvbHV0ZWx5IGEgcmVxdWlyZW1lbnQuIEkgbmVlZCB0byBlbnN1cmUgdGhpcyBpcyBzZXQgY29ycmVjdGx5IGluIG15IGNvbmZpZ3VyYXRpb24uIFRvIGNsYXJpZnkgaG93IGB4ZnJtX3NldF9zcGRpbmZvYCBpcyBkZXNpZ25lZCwgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHJldmlldyB0aGUgY29kZSBpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3NldF9zcGRpbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9MTY0MT1zdGF0aWMgaW50IGJ1aWxkX3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTMtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxNjk0OnN0YXRpYyBpbnQgeGZybV9zZXRfc3BkaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTUtXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKiphdHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNzIxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV9saW5rIHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzUyLVx0W1hGUk1fTVNHX0dFVFNBRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9nZXRfc2FkaW5mbyAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzUzOlx0W1hGUk1fTVNHX05FV1NQRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9zZXRfc3BkaW5mbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NTQtXHRcdFx0XHRcdFx0ICAgLm5sYV9wb2wgPSB4ZnJtYV9zcGRfcG9saWN5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzYxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBTZWN1cml0eSBQb2xpY3kgVXBkYXRlKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBuZXRsaW5rIG1lc3NhZ2UsIGBYRlJNX01TR19ORVdTUERJTkZPYC4gVGhhdCYjMzk7cyB0aGUga2V5IHRyaWdnZXIgaGVyZTsgaXQmIzM5O3Mgd2hhdCBpbml0aWF0ZXMgdGhpcyB3aG9sZSBwcm9jZXNzLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBmaXggZm9yIHRoYXQgYnVnIGluIGB4ZnJtX2hhc2hfcmVidWlsZGAsIHdoaWNoIGlzIGdvb2QgdG8gc2VlLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBgeGZybV9oYXNoX3JlYnVpbGRgIGFuZCBgeGZybV9zZXRfc3BkaW5mb2AsIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkgcmVhbGx5IG5lZWQgdG8gZm9jdXMgb24gdG8gZ3Jhc3AgdGhlIGZ1bGwgaW1wYWN0IG9mIHRoZSBjaGFuZ2UuCgpOb3csIGxldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEFoLCBsb29rcyBsaWtlIGBYRlJNX1VTRVJgIGlzIHN1ZmZpY2llbnQgaGVyZS4gYFhGUk1gIGl0c2VsZiBpcyBzZWxlY3RlZCBieSBgWEZSTV9VU0VSYC4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBYRlJNX1VTRVJgLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fVVNFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMzUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmV0d29yayBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGBJTkVUYCBpcyBhIGdpdmVuIOKAkyB0aGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGggaGVyZS4gSXQgd291bGRuJiMzOTt0IGJlIHZlcnkgdXNlZnVsIGlmIHdlIHdlcmUgb3BlcmF0aW5nIHdpdGhvdXQgdGhhdCwgc28gdGhhdCBjaGVja3Mgb3V0LiBOb3csIHdoZXJlIHdlcmUgd2U/IEFoIHllcywgbGV0JiMzOTtzIHJldmlzaXQgdGhhdCBgeGZybV9oYXNoX3JlYnVpbGRgIGZ1bmN0aW9uLiBJIHJlYWxseSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGFnYWluLiBUaGVyZSYjMzk7cyBwcm9iYWJseSBzb21ldGhpbmcgaW1wb3J0YW50IEkgYW0gb3Zlcmxvb2tpbmcsIGFuZCBpdCYjMzk7cyBrZXkgdGhhdCB0aGlzIHNwZWNpZmljIGVsZW1lbnQgaXMgZXhhbWluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNjU9c3RhdGljIGJvb2wgeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhjb25zdCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbGljeSlcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzUtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyNzY6c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQyMTI9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fcG9saWN5X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI1ODpcdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrLCB4ZnJtX2hhc2hfcmVidWlsZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY5OAoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBYRlJNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhlIGNvZGUgY2hhbmdlOiBgaGxpc3RfZGVsX3JjdWAgaXMgYmVpbmcgcmVwbGFjZWQgd2l0aCBgaGxpc3RfZGVsX2luaXRfcmN1YC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIG5vdCBqdXN0IGNvc21ldGljOyBpdCYjMzk7cyBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvZGUuIE15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdG8gZHJpbGwgZG93biBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuCgpUaGUgY3J1Y2lhbCBwYXJ0cyBhcmUgdGhlIGZ1bmN0aW9ucyBgeGZybV9oYXNoX3JlYnVpbGRgIGFuZCBgeGZybV9zZXRfc3BkaW5mb2AsIHdoaWNoIHNlZW0gdG8gYmUgdGhlIGZvY3VzIGhlcmUuIFRoZSAmIzM0O1dvcnRoRnV6emluZzogdHJ1ZSYjMzQ7IGZsYWcgaXMgYSBnb29kIGluZGljYXRvciB0aGF0IHdlIHNob3VsZCBjb25jZW50cmF0ZSBvdXIgZWZmb3J0cyBpbiB0aGVzZSBhcmVhcy4gVGhlIGBFbmFibGVDb25maWdzOiBYRlJNX1VTRVJgIGltcGxpZXMgdGhhdCB0aGlzIGlzc3VlIGlzIHBvdGVudGlhbGx5IHVzZXItdHJpZ2dlcmFibGUsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgZmFjdG9yIGluIGV2YWx1YXRpbmcgdGhlIHNldmVyaXR5IG9mIHRoZSBidWcuCgpOb3csIEkgdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoOiBgaGxpc3RfZGVsX2luaXRfcmN1YCB2ZXJzdXMgYGhsaXN0X2RlbF9yY3VgIGlzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcgZml4LiAgVGhlIHBhdGNoIGFpbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgWEZSTSBwb2xpY3kgaGFzaCB0YWJsZSwgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgcmVidWlsZGluZyBwcm9jZXNzLiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUuIFRoaXMgaXMgbGlrZWx5IHRyaWdnZXJlZCB2aWEgdGhlIGBYRlJNX01TR19ORVdTUERJTkZPYCBuZXRsaW5rIG1lc3NhZ2UuIFRoaXMgbWVhbnMgYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGNhbiBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgYnVnIHRocm91Z2ggY2FyZWZ1bGx5IGNyYWZ0ZWQgbmV0bGluayBtZXNzYWdlcywgbWFraW5nIGl0IGEgY3JpdGljYWwgdnVsbmVyYWJpbGl0eSB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyBgeGZybV9oYXNoX3JlYnVpbGRgIGludGVyYWN0cyB3aXRoIHRoZSBobGlzdCBhbmQgY29uZmlybSB0aGUgZXhhY3QgbWVjaGFuaXNtIGxlYWRpbmcgdG8gdGhlIGlzc3VlLiBJIHN1c3BlY3QgdGhpcyB3aWxsIGJlIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2hhc2hfcmVidWlsZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3NldF9zcGRpbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGhsaXN0X2RlbF9yY3VgIHRvIGBobGlzdF9kZWxfaW5pdF9yY3VgIGluIGB4ZnJtX2hhc2hfcmVidWlsZGAsIGZpeGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBidWcgd2hlbiByZWJ1aWxkaW5nIHRoZSBYRlJNIHBvbGljeSBoYXNoIHRhYmxlLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBYRlJNX01TR19ORVdTUERJTkZPYCBuZXRsaW5rIG1lc3NhZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc2V0X3NwZGluZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjQzLjA4MzczNDQyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTk2NjM0MTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3NldF9zcGRpbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDQ6NDMuMDgzNzM4ODk1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQzNDY3OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNjc3MmZkNDE3ODc4ZjBlNzEwZjBlNzVhYzFjYzk2ZGY2ZTkyNDljXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMjE6NDQ6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uMjYxMmE0MDU1NDJiYmQgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG5AQCAtMTM2Miw3ICsxMzYyLDcgQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRcXHRpZiAoeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhwb2xpY3kpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGhsaXN0X2RlbF9yY3UoXFx1MDAyNnBvbGljeS1cXHUwMDNlYnlkc3QpO1xcbitcXHRcXHRobGlzdF9kZWxfaW5pdF9yY3UoXFx1MDAyNnBvbGljeS1cXHUwMDNlYnlkc3QpO1xcbiBcXG4gXFx0XFx0bmV3cG9zID0gTlVMTDtcXG4gXFx0XFx0ZGlyID0geGZybV9wb2xpY3lfaWQyZGlyKHBvbGljeS1cXHUwMDNlaW5kZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMTo0NDo0My41NDg3MTY4NTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTMxNjQxMjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3NldF9zcGRpbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNjc3MmZkNDE3ODc4ZjBlNzEwZjBlNzVhYzFjYzk2ZGY2ZTkyNDljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAyMTo0NDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uMjYxMmE0MDU1NDJiYmQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4rKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTM2Miw3ICsxMzYyLDcgQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRpZiAoeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhwb2xpY3kpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRobGlzdF9kZWxfcmN1KFx1MDAyNnBvbGljeS1cdTAwM2VieWRzdCk7XG4rXHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZwb2xpY3ktXHUwMDNlYnlkc3QpO1xuIFxuIFx0XHRuZXdwb3MgPSBOVUxMO1xuIFx0XHRkaXIgPSB4ZnJtX3BvbGljeV9pZDJkaXIocG9saWN5LVx1MDAzZWluZGV4KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjQzLjU0ODcxODA5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzgxNjc5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFhGUk0gUG9saWN5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgeGZybV9oYXNoX3JlYnVpbGRgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgYSBzaW1wbGUgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsIGNoYW5nZTogdGhleSd2ZSBzd2FwcGVkIGBobGlzdF9kZWxfcmN1YCBmb3IgYGhsaXN0X2RlbF9pbml0X3JjdWAuIEhtbSwgc28gd2UncmUgaW5pdGlhbGl6aW5nIHRoZSBub2RlIGFmdGVyIGRlbGV0aW5nIGl0IG5vdy4gTWFrZXMgc2Vuc2Ug4oCTIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBtZWFudCB0byBwcm92aWRlIGFkZGl0aW9uYWwgc2FmZXR5LiBJdCdzIGFib3V0IHByZXZlbnRpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMgaWYgdGhpcyBgcG9saWN5LVx1MDAzZWJ5ZHN0YCBub2RlIGlzIHNvbWVob3cgY2hlY2tlZCBhZ2FpbiBhZnRlciBkZWxldGlvbiwgb3IgbWF5YmUgaWYgaXQncyBlcnJvbmVvdXNseSB0YXJnZXRlZCBmb3IgYW5vdGhlciBkZWxldGlvbi4gSW5pdGlhbGl6aW5nIGl0IGFmdGVyIGRlbGV0aW9uIGVzc2VudGlhbGx5IGNsZWFucyBpdCB1cCBhbmQgZW5zdXJlcyBpdHMgc3RhdGUgaXMgcHJlZGljdGFibGUuXG5cbkknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgeGZybV9wb2xpY3kuY2AgYXJvdW5kIHRoZSBgeGZybV9oYXNoX3JlYnVpbGRgIGZ1bmN0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250ZXh0IGFuZCB3aHkgdGhpcyB3YXMgbmVjZXNzYXJ5LiBJdCB3b3VsZCBiZSBoZWxwZnVsIHRvIHVuZGVyc3RhbmQgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgY29uY3VycmVudCBhY2Nlc3NlcyB3aXRoaW4gdGhlIFhGUk0gc3Vic3lzdGVtLiBJJ20gd29uZGVyaW5nIGlmIHRoaXMgY2hhbmdlIHdhcyB0cmlnZ2VyZWQgYnkgYSBzcGVjaWZpYyBidWcgcmVwb3J0IG9yIGRpc2NvdmVyZWQgdGhyb3VnaCBzdGF0aWMgYW5hbHlzaXMuIE5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgJ3doeScgYmVoaW5kIHRoZSBjaGFuZ2UgdG8gZ2F1Z2UgaXRzIGltcGFjdCBmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjQ4LjU4Njg4ODY5NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODgxODk4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTI2NT1zdGF0aWMgYm9vbCB4ZnJtX3BvbGljeV9pc19kZWFkX29yX3NrKGNvbnN0IHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9saWN5KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc1LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI3NjpzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDIxMj1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9wb2xpY3lfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTctXFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yaywgeGZybV9oYXNoX3Jlc2l6ZSk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjU4OlxcdElOSVRfV09SSyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmssIHhmcm1faGFzaF9yZWJ1aWxkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjQ4LjY0NTcxMzg5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzk3MjIwNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpczpcblxuKipBbmFseXppbmcgdGhlIGB4ZnJtX2hhc2hfcmVidWlsZGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgeGZybV9oYXNoX3JlYnVpbGRgIGlzIHJ1bm5pbmcgYXMgYSB3b3JrcXVldWUgZnVuY3Rpb24uIEludGVyZXN0aW5nLCBpdCdzIG5vdCBzb21lIGltbWVkaWF0ZSwgaW50ZXJydXB0LWNvbnRleHQgdGhpbmcuIEFuZCBpdCdzIGluaXRpYWxpemVkIGR1cmluZyBgeGZybV9wb2xpY3lfaW5pdGAsIHdoaWNoIGdpdmVzIG1lIGEgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpZiBJIG5lZWQgdG8gdHJhY2UgaXRzIG9yaWdpbnMuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhhdCBwcmV0dHkgbXVjaCBzY3JlYW1zIGJ1ZyBmaXgsIGFuZCBnaXZlbiB0aGUgY29udGV4dCBJJ20gYmV0dGluZyBvbiBzb21ldGhpbmcgbGlrZSBhIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgcGVyaGFwcyBhbiB1bmhhc2hlZCBkYXRhIHN0cnVjdHVyZSBjaGVjayB0aGF0IHdhc24ndCByb2J1c3QgZW5vdWdoLiBUaW1lIHRvIGdldCBmYW1pbGlhciB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZyByZWxhdGVkIHRvIFhGUk0sIHNvIEkgY2FuIHRyeSB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBwcm9ibGVtIGl0J3MgYWRkcmVzc2luZyBhbmQgaG93IHRoZXkndmUgdGFja2xlZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjUxLjg4NTQzNzk1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjA0ODc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWctNC0jXFxubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy02LVxcdGJvb2xcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNTAtXFxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0vS2NvbmZpZy01Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNzEtXFxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXFxubmV0L3hmcm0vS2NvbmZpZy03My1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxcbm5ldC94ZnJtL0tjb25maWctOTQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTA1LVxcbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxcbm5ldC94ZnJtL0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTU2LVxcbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMTo0NDo1MS45NDE0OTI0NDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk1ODY0OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgWEZSTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBlbGVtZW50IGhlcmUgaXMgYFhGUk1gLiBJdCdzIGEgc2ltcGxlIGJvb2xlYW4gZmxhZywgb24gb3Igb2ZmLiBCdXQgaXQncyByYXJlbHkgc2V0IGRpcmVjdGx5LCBpc24ndCBpdD8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCdzIHR5cGljYWxseSBicm91Z2h0IGludG8gdGhlIGVuYWJsZWQgc3RhdGUgaW5kaXJlY3RseSwgdXN1YWxseSBieSBvdGhlciwgbW9yZSBncmFudWxhciBvcHRpb25zIGxpa2UgYFhGUk1fVVNFUmAgb3IgdGhpbmdzIHJlbGF0ZWQgdG8gSVBzZWMsIGxpa2UgYElORVRfRVNQYC5cblxuU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IHRyaWdnZXJzIHRoZSBlbmFibGluZyBvZiBgWEZSTWAgaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBidWlsZCBmbG93LiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyB0byBzZWUgd2hpY2ggb2YgdGhvc2Ugb3RoZXIgZmxhZ3MgYXJlIGluZmx1ZW5jaW5nIHRoZSBzdGF0ZSBvZiBgWEZSTWAuIExldCdzIHVucmF2ZWwgdGhpcyBhbmQgc2VlIHdoYXQncyB1bHRpbWF0ZWx5IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGBYRlJNYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY1MywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjU1LjEzNzM2MDYxNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMwMzAzNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBYRlJNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE5ND1jb25maWcgSVhHQkVfSVBTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTk4LVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTk5OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMjQtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjU6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzA3LVxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozMDg6XFx0c2VsZWN0IFhGUk1cXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxcbm5ldC9pcHY0L0tjb25maWctMzQwLVxcdHRyaXN0YXRlIFxcXCJJUDogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozNDE6XFx0c2VsZWN0IFhGUk1fQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1NS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEVTUCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1Ny1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM2OT1jb25maWcgSU5FVF9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXFx0ZGVwZW5kcyBvbiBJTkVUX0VTUFxcbm5ldC9pcHY0L0tjb25maWc6MzcyOlxcdHNlbGVjdCBYRlJNX09GRkxPQURcXG5uZXQvaXB2NC9LY29uZmlnLTM3My1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4Ni1cXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjQvS2NvbmZpZzozODc6XFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG5uZXQvaXB2NC9LY29uZmlnLTM4OC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM5ND1jb25maWcgSU5FVF9JUENPTVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzk2LVxcdHNlbGVjdCBJTkVUX1hGUk1fVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XFx0c2VsZWN0IFhGUk1fSVBDT01QXFxubmV0L2lwdjQvS2NvbmZpZy0zOTgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz00Nz1jb25maWcgSU5FVDZfQUhcXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBBSCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2Ni9LY29uZmlnOjQ5OlxcdHNlbGVjdCBYRlJNX0FIXFxubmV0L2lwdjYvS2NvbmZpZy01MC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjYvS2NvbmZpZzo2NDpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTY1LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9Nzc9Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVxcdGRlcGVuZHMgb24gSU5FVDZfRVNQXFxubmV0L2lwdjYvS2NvbmZpZzo4MDpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjYvS2NvbmZpZy04MS1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvaXB2Ni9LY29uZmlnOjk1OlxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxubmV0L2lwdjYvS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cXHRzZWxlY3QgSU5FVDZfWEZSTV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjEwNTpcXHRzZWxlY3QgWEZSTV9JUENPTVBcXG5uZXQvaXB2Ni9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTExMj1jb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbm5ldC9pcHY2L0tjb25maWc6MTE0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE1My1cXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MTU0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xNTUtXFx0aGVscFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xND1jb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTY6XFx0c2VsZWN0IFhGUk1cXG5uZXQveGZybS9LY29uZmlnLTE3LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MjM9Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoyNTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTg0PWNvbmZpZyBYRlJNX0FIXFxubmV0L3hmcm0vS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6ODY6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctODctXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz05Mz1jb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxubmV0L3hmcm0vS2NvbmZpZzo5NTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy05Ni1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTA4OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTEwOS1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTExMj1jb25maWcgTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJQRl9LRVkgc29ja2V0cyAoZGVwcmVjYXRlZClcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTI3LVxcdGRlcGVuZHMgb24gTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWc6MTI4OlxcdHNlbGVjdCBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTEyOS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjU3LjA2NzY2ODUyNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDg2MDExMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBYRlJNIFVzZXItU3BhY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgWEZSTSBzdWJzeXN0ZW0gaGVyZSwgZm9jdXNpbmcgb24gdGhlIHVzZXItc3BhY2UgY29uZmlndXJhdGlvbiBhc3BlY3QuIEl0IGxvb2tzIGxpa2UgYFhGUk1fVVNFUmAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIHBvaW50LiBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZS4gTm93IEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLlxuXG5JIHNlZSB0aGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgcGFydCBvZiBgeGZybV9wb2xpY3kuY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBwb2xpY3kgaGVyZS4gQW5kIHRoaXMgd2hvbGUgdGhpbmcgaXMgZGVwZW5kZW50IG9uIGBDT05GSUdfWEZSTWAsIG9mIGNvdXJzZS4gVGltZSB0byBkaWcgZGVlcGVyLCBzcGVjaWZpY2FsbHkgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4gSSdsbCBjaGVjayBgbmV0L3hmcm0vTWFrZWZpbGVgIHRvIHNlZSBob3cgZXZlcnl0aGluZyBpcyBjb21waWxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY2OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjAwLjExNjI3MTYzMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzNTAxODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9wb2xpY3lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTI9ZW5kaWZcXG5uZXQveGZybS9NYWtlZmlsZS0xMy1cXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDU6MDAuMTcyNjI3ODk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjMxMjM0MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIHRocm91Z2ggdGhpczpcblxuKipEaWdnaW5nIGludG8gdGhlIFhGUk0gU3Vic3lzdGVtKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgWEZSTSBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgbWFuYWdlZC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19YRlJNYCBpcyB0aGUgY29yZSBvZiBpdCBhbGwuIEdvb2QgdG8ga25vdy4gQW5kIHRvIGVuYWJsZSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24sIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgYFhGUk1fVVNFUmAgaXMgc2V0LiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBYRlJNIGhhc2ggdGFibGUgZ2V0cyByZWJ1aWx0LiBJdCBsb29rcyBsaWtlIGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLiBJdCdzIGNhbGxlZCBlaXRoZXIgYnkgYHhmcm1faGFzaF9yZXNpemVgIHdoaWNoIEkgZXhwZWN0IHRvIHNlZSBpbiByZXNwb25zZSB0byBhIGNoYW5nZSBpbiByZXNvdXJjZXMsIGFuZCBieSBgeGZybV9wb2xpY3lfaHRocmVzaC53b3JrYC4gVGhhdCBgcG9saWN5X2h0aHJlc2gud29ya2AgaXMgaW50ZXJlc3RpbmcsIGFuZCBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSAqdGhhdCogaXMgc2NoZWR1bGVkIGZyb20uIEkgd29uZGVyIGlmIHRoaXMgcmVsYXRlcyB0byBtZW1vcnkgcHJlc3N1cmUsIG9yIHBlcmhhcHMgc29tZSBwb2xpY3kgdGhyZXNob2xkcz8gTGV0J3MgdHJhY2UgYmFjayB3aGVyZSB0aGlzIHdvcmsgcXVldWUgaXRlbSBpcyBhZGRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAzMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjA0LjI5NTc1MzQ4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU2NzgwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9saWN5X2h0aHJlc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV9wb2xpY3kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc4LVxcdHN0cnVjdCBuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI3OTpcXHRcXHRcXHRcXHQgICAgICAgeGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyODAtXFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2w7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyOTEtXFx0ZG8ge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5MjpcXHRcXHRzZXEgPSByZWFkX3NlcWJlZ2luKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jayk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjkzLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NDpcXHRcXHRsYml0czQgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM0O1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NTpcXHRcXHRyYml0czQgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gucmJpdHM0O1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NjpcXHRcXHRsYml0czYgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM2O1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NzpcXHRcXHRyYml0czYgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gucmJpdHM2O1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5ODpcXHR9IHdoaWxlIChyZWFkX3NlcXJldHJ5KFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jaywgc2VxKSk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjk5LVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0xMzk5PXZvaWQgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDAte1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTQwMTpcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yayk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDAyLX1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDIxMj1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9wb2xpY3lfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNDctXFx0fVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI0ODpcXHRuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM0ID0gMzI7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjQ5OlxcdG5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5yYml0czQgPSAzMjtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTA6XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxiaXRzNiA9IDEyODtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTE6XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLnJiaXRzNiA9IDEyODtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTItXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjUzOlxcdHNlcWxvY2tfaW5pdChcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxvY2spO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1NC1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cXHRJTklUX1dPUksoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTg6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yaywgeGZybV9oYXNoX3JlYnVpbGQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1OS1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDI3Mz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm1fbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNzQte1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI3NTpcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI3Ni1cXHRmbHVzaF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjA0LjM1MTQzNzAzM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY1OTYyNDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipUaGlua2luZyBUaHJvdWdoIHRoZSBQb2xpY3kgSGFzaCBSZWJ1aWxkKipcblxuUmlnaHQsIHNvIGB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRgLiBUaGF0J3MgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSB3aG9sZSBzaGViYW5nLCB0aGUgcmVidWlsZCBvZiB0aGUgcG9saWN5IGhhc2guIE9rYXksIG5vdyBJIGNhbiBzdGFydCB0byB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgYW5kIHRoZSBwb3RlbnRpYWwgdXNlIGNhc2VzIGZvciBzY2hlZHVsaW5nIHRoaXMgcmVidWlsZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlIGFuZCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuIExldCdzIHNlZS4uLiB3aGVuIHdvdWxkIHRoaXMgYmUgdHJpZ2dlcmVkPyBXaGF0IGFyZSB0aGUgZmFjdG9ycyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIHRoaXMgcHJvY2Vzcz8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsb2FkIG9uIHRoZSBzeXN0ZW0sIHRoZSBwb3RlbnRpYWwgY29udGVudGlvbiwgYW5kIHRoZSBpbXBhY3QgdGhpcyByZWJ1aWxkIHdvdWxkIGhhdmUgb24gb3ZlcmFsbCBwZXJmb3JtYW5jZS4gSSBzaG91bGQgYmUgYWJsZSB0byBkaWcgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmIGFuZCBzdXJyb3VuZGluZyBjb2RlIHRvIGZpZ3VyZSBvdXQgdGhlIHRyaWdnZXJpbmcgY29uZGl0aW9ucyBhbmQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEJhc2VkIG9uIGhvdyB0aGF0J3MgaW1wbGVtZW50ZWQsIEkgY2FuIGFudGljaXBhdGUgaG93IHRoaXMgaW1wYWN0cyBvdGhlciBjb21wb25lbnRzIHdpdGhpbiB0aGUgc3lzdGVtLiBVbmRlcnN0YW5kaW5nIHRoaXMgcmVidWlsZCBwcm9jZXNzIGlzIGNyaXRpY2FsIGZvciBkaWFnbm9zaW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBwZXJmb3JtYW5jZSBpc3N1ZXMgcmVsYXRlZCB0byBJUHNlYyBwb2xpY3kgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQzMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjA3LjMxNzQwMTYxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA1ODgyNDU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3hmcm0uaD0xODk2PWludCB4ZnJtX3BvbGljeV9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsIGJvb2wgdGFza192YWxpZCk7XFxuaW5jbHVkZS9uZXQveGZybS5oOjE4OTc6dm9pZCB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQoc3RydWN0IG5ldCAqbmV0KTtcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTg5OC11MzIgeGZybV9nZXRfYWNxc2VxKHZvaWQpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0xMjc2PXN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTM5OC1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEzOTk6dm9pZCB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMC17XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDItfVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTQwMzpFWFBPUlRfU1lNQk9MKHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDA0LVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MTY5ND1zdGF0aWMgaW50IHhmcm1fc2V0X3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xNzQxLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjE3NDI6XFx0XFx0eGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKG5ldCk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMTc0My1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjA5LjM3NjIzMzI0NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA2MjkyODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWEZSTSBQb2xpY3kgU2V0dXAqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aHJvdWdoIHRoaXMgY29kZSByZWxhdGVkIHRvIFhGUk0gcG9saWN5IG1hbmFnZW1lbnQuIEl0IGxvb2tzIGxpa2UgYHhmcm1fc2V0X3NwZGluZm9gIGlzIGNhbGxpbmcgYHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZGAsIHdoaWNoIGlzIGV4cGVjdGVkIGJlaGF2aW9yIGZvciBwb2xpY3kgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBJIHJlbWVtYmVyIGB4ZnJtX3NldF9zcGRpbmZvYCByZXNpZGVzIGluIGBuZXQveGZybS94ZnJtX3VzZXIuY2AuICBBaGEsIGFuZCB0aGF0IGZpbGUgZ2V0cyBjb21waWxlZCAqb25seSogd2hlbiBgQ09ORklHX1hGUk1fVVNFUmAgaXMgZW5hYmxlZC4gVGhhdCdzIGEgY3J1Y2lhbCBwb2ludC4gSWYgSSdtIHVzaW5nIHRoZSB1c2VyIHNwYWNlIFhGUk0gaW50ZXJmYWNlLCB3aGljaCBJIGFtLCBgWEZSTV9VU0VSYCBpcyBhYnNvbHV0ZWx5IGEgcmVxdWlyZW1lbnQuIEkgbmVlZCB0byBlbnN1cmUgdGhpcyBpcyBzZXQgY29ycmVjdGx5IGluIG15IGNvbmZpZ3VyYXRpb24uIFRvIGNsYXJpZnkgaG93IGB4ZnJtX3NldF9zcGRpbmZvYCBpcyBkZXNpZ25lZCwgSSdsbCBnbyBhaGVhZCBhbmQgcmV2aWV3IHRoZSBjb2RlIGluIGBuZXQveGZybS94ZnJtX3VzZXIuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwOTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDU6MTIuNTgyNTI3OTcyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODU5NDI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3NldF9zcGRpbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTE2NDE9c3RhdGljIGludCBidWlsZF9zcGRpbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTMtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTY5NDpzdGF0aWMgaW50IHhmcm1fc2V0X3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTY5NS1cXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzcyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzUyLVxcdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X3NhZGluZm8gICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3NTM6XFx0W1hGUk1fTVNHX05FV1NQRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9zZXRfc3BkaW5mbyxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzU0LVxcdFxcdFxcdFxcdFxcdFxcdCAgIC5ubGFfcG9sID0geGZybWFfc3BkX3BvbGljeSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDU6MTIuNjQxMTI5NTE3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjM0NDk5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFNlY3VyaXR5IFBvbGljeSBVcGRhdGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBuZXRsaW5rIG1lc3NhZ2UsIGBYRlJNX01TR19ORVdTUERJTkZPYC4gVGhhdCdzIHRoZSBrZXkgdHJpZ2dlciBoZXJlOyBpdCdzIHdoYXQgaW5pdGlhdGVzIHRoaXMgd2hvbGUgcHJvY2Vzcy4gVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgZml4IGZvciB0aGF0IGJ1ZyBpbiBgeGZybV9oYXNoX3JlYnVpbGRgLCB3aGljaCBpcyBnb29kIHRvIHNlZS4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYHhmcm1faGFzaF9yZWJ1aWxkYCBhbmQgYHhmcm1fc2V0X3NwZGluZm9gLCB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHJlYWxseSBuZWVkIHRvIGZvY3VzIG9uIHRvIGdyYXNwIHRoZSBmdWxsIGltcGFjdCBvZiB0aGUgY2hhbmdlLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gQWgsIGxvb2tzIGxpa2UgYFhGUk1fVVNFUmAgaXMgc3VmZmljaWVudCBoZXJlLiBgWEZSTWAgaXRzZWxmIGlzIHNlbGVjdGVkIGJ5IGBYRlJNX1VTRVJgLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFhGUk1fVVNFUmAsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzYxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjE2LjIwNDU4MTg3N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxNTY2OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1fVVNFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTMxLVxcbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcXG5uZXQveGZybS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJDb21wYXRpYmxlIEFCSSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMTo0NToxNi4yNjM3NDY3NjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0NTM2NzM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5ldHdvcmsgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGBJTkVUYCBpcyBhIGdpdmVuIOKAkyB0aGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgZm91bmRhdGlvbiB3ZSdyZSBzdGFydGluZyB3aXRoIGhlcmUuIEl0IHdvdWxkbid0IGJlIHZlcnkgdXNlZnVsIGlmIHdlIHdlcmUgb3BlcmF0aW5nIHdpdGhvdXQgdGhhdCwgc28gdGhhdCBjaGVja3Mgb3V0LiBOb3csIHdoZXJlIHdlcmUgd2U/IEFoIHllcywgbGV0J3MgcmV2aXNpdCB0aGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAgZnVuY3Rpb24uIEkgcmVhbGx5IG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgYWdhaW4uIFRoZXJlJ3MgcHJvYmFibHkgc29tZXRoaW5nIGltcG9ydGFudCBJIGFtIG92ZXJsb29raW5nLCBhbmQgaXQncyBrZXkgdGhhdCB0aGlzIHNwZWNpZmljIGVsZW1lbnQgaXMgZXhhbWluZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMzUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMTo0NToxOS4xMDkxMTcxNTVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5Nzc0NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fcG9saWN5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9wb2xpY3kuYz0xMjY1PXN0YXRpYyBib29sIHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2soY29uc3Qgc3RydWN0IHhmcm1fcG9saWN5ICpwb2xpY3kpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzUtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxMjc2OnN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzcte1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MjEyPXN0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtX3BvbGljeV9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cXHRJTklUX1dPUksoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTg6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yaywgeGZybV9oYXNoX3JlYnVpbGQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1OS1cXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDU6MTkuMTY4ODk2ODMxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MjQ3ODk5ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBYRlJNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBjb2RlIGNoYW5nZTogYGhsaXN0X2RlbF9yY3VgIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYGhsaXN0X2RlbF9pbml0X3JjdWAuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgbWVhbmluZyBpdCdzIG5vdCBqdXN0IGNvc21ldGljOyBpdCdzIGFsdGVyaW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgY29kZS4gTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy5cblxuVGhlIGNydWNpYWwgcGFydHMgYXJlIHRoZSBmdW5jdGlvbnMgYHhmcm1faGFzaF9yZWJ1aWxkYCBhbmQgYHhmcm1fc2V0X3NwZGluZm9gLCB3aGljaCBzZWVtIHRvIGJlIHRoZSBmb2N1cyBoZXJlLiBUaGUgXCJXb3J0aEZ1enppbmc6IHRydWVcIiBmbGFnIGlzIGEgZ29vZCBpbmRpY2F0b3IgdGhhdCB3ZSBzaG91bGQgY29uY2VudHJhdGUgb3VyIGVmZm9ydHMgaW4gdGhlc2UgYXJlYXMuIFRoZSBgRW5hYmxlQ29uZmlnczogWEZSTV9VU0VSYCBpbXBsaWVzIHRoYXQgdGhpcyBpc3N1ZSBpcyBwb3RlbnRpYWxseSB1c2VyLXRyaWdnZXJhYmxlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGZhY3RvciBpbiBldmFsdWF0aW5nIHRoZSBzZXZlcml0eSBvZiB0aGUgYnVnLlxuXG5Ob3csIEkgdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoOiBgaGxpc3RfZGVsX2luaXRfcmN1YCB2ZXJzdXMgYGhsaXN0X2RlbF9yY3VgIGlzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcgZml4LiAgVGhlIHBhdGNoIGFpbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgWEZSTSBwb2xpY3kgaGFzaCB0YWJsZSwgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgcmVidWlsZGluZyBwcm9jZXNzLiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUuIFRoaXMgaXMgbGlrZWx5IHRyaWdnZXJlZCB2aWEgdGhlIGBYRlJNX01TR19ORVdTUERJTkZPYCBuZXRsaW5rIG1lc3NhZ2UuIFRoaXMgbWVhbnMgYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGNhbiBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgYnVnIHRocm91Z2ggY2FyZWZ1bGx5IGNyYWZ0ZWQgbmV0bGluayBtZXNzYWdlcywgbWFraW5nIGl0IGEgY3JpdGljYWwgdnVsbmVyYWJpbGl0eSB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyBgeGZybV9oYXNoX3JlYnVpbGRgIGludGVyYWN0cyB3aXRoIHRoZSBobGlzdCBhbmQgY29uZmlybSB0aGUgZXhhY3QgbWVjaGFuaXNtIGxlYWRpbmcgdG8gdGhlIGlzc3VlLiBJIHN1c3BlY3QgdGhpcyB3aWxsIGJlIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2OTgsIk91dHB1dFRva2VucyI6MTM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjI0Ljk5MzY4OTc4NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NjYyNzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICAgIFwieGZybV9zZXRfc3BkaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYGhsaXN0X2RlbF9yY3VgIHRvIGBobGlzdF9kZWxfaW5pdF9yY3VgIGluIGB4ZnJtX2hhc2hfcmVidWlsZGAsIGZpeGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBidWcgd2hlbiByZWJ1aWxkaW5nIHRoZSBYRlJNIHBvbGljeSBoYXNoIHRhYmxlLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBYRlJNX01TR19ORVdTUERJTkZPYCBuZXRsaW5rIG1lc3NhZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9oYXNoX3JlYnVpbGRcIixcbiAgICBcInhmcm1fc2V0X3NwZGluZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBobGlzdF9kZWxfcmN1YCB0byBgaGxpc3RfZGVsX2luaXRfcmN1YCBpbiBgeGZybV9oYXNoX3JlYnVpbGRgLCBmaXhpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgYnVnIHdoZW4gcmVidWlsZGluZyB0aGUgWEZSTSBwb2xpY3kgaGFzaCB0YWJsZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBgWEZSTV9NU0dfTkVXU1BESU5GT2AgbmV0bGluayBtZXNzYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 21:31:34 +0000 UTC FinishedAt: 2026-07-02 21:45:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER" ], "series_id": "5e4b8eed-941c-4223-9115-12b5d537b6da" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_hash_rebuild", "xfrm_set_spdinfo" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc2V0X3NwZGluZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NzcyZmQ0MTc4NzhmMGU3MTBmMGU3NWFjMWNjOTZkZjZlOTI0OWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDIxOjQ0OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uMjYxMmE0MDU1NDJiYmQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTM2Miw3ICYjNDM7MTM2Miw3IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0aWYgKHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2socG9saWN5KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZwb2xpY3ktXHUwMDNlYnlkc3QpO1xuJiM0MztcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNnBvbGljeS1cdTAwM2VieWRzdCk7XG4gXG4gXHRcdG5ld3BvcyA9IE5VTEw7XG4gXHRcdGRpciA9IHhmcm1fcG9saWN5X2lkMmRpcihwb2xpY3ktXHUwMDNlaW5kZXgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc2V0X3NwZGluZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTY3NzJmZDQxNzg3OGYwZTcxMGYwZTc1YWMxY2M5NmRmNmU5MjQ5YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMjE6NDQ6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3BvbGljeS5jIGIvbmV0L3hmcm0veGZybV9wb2xpY3kuYwppbmRleCA3ZWY4NjFhMGU4MjMxYi4uMjYxMmE0MDU1NDJiYmQgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9wb2xpY3kuYwpAQCAtMTM2Miw3ICYjNDM7MTM2Miw3IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJaWYgKHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2socG9saWN5KSkKIAkJCWNvbnRpbnVlOwogCi0JCWhsaXN0X2RlbF9yY3UoJmFtcDtwb2xpY3ktJmd0O2J5ZHN0KTsKJiM0MzsJCWhsaXN0X2RlbF9pbml0X3JjdSgmYW1wO3BvbGljeS0mZ3Q7Ynlkc3QpOwogCiAJCW5ld3BvcyA9IE5VTEw7CiAJCWRpciA9IHhmcm1fcG9saWN5X2lkMmRpcihwb2xpY3ktJmd0O2luZGV4KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWNlbnQgWEZSTSBQb2xpY3kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYHhmcm1faGFzaF9yZWJ1aWxkYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIGEgc2ltcGxlIGJ1dCBwb3RlbnRpYWxseSBjcml0aWNhbCBjaGFuZ2U6IHRoZXkmIzM5O3ZlIHN3YXBwZWQgYGhsaXN0X2RlbF9yY3VgIGZvciBgaGxpc3RfZGVsX2luaXRfcmN1YC4gSG1tLCBzbyB3ZSYjMzk7cmUgaW5pdGlhbGl6aW5nIHRoZSBub2RlIGFmdGVyIGRlbGV0aW5nIGl0IG5vdy4gTWFrZXMgc2Vuc2Ug4oCTIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBtZWFudCB0byBwcm92aWRlIGFkZGl0aW9uYWwgc2FmZXR5LiBJdCYjMzk7cyBhYm91dCBwcmV2ZW50aW5nIGFueSBwb3RlbnRpYWwgaXNzdWVzIGlmIHRoaXMgYHBvbGljeS0mZ3Q7Ynlkc3RgIG5vZGUgaXMgc29tZWhvdyBjaGVja2VkIGFnYWluIGFmdGVyIGRlbGV0aW9uLCBvciBtYXliZSBpZiBpdCYjMzk7cyBlcnJvbmVvdXNseSB0YXJnZXRlZCBmb3IgYW5vdGhlciBkZWxldGlvbi4gSW5pdGlhbGl6aW5nIGl0IGFmdGVyIGRlbGV0aW9uIGVzc2VudGlhbGx5IGNsZWFucyBpdCB1cCBhbmQgZW5zdXJlcyBpdHMgc3RhdGUgaXMgcHJlZGljdGFibGUuCgpJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGB4ZnJtX3BvbGljeS5jYCBhcm91bmQgdGhlIGB4ZnJtX2hhc2hfcmVidWlsZGAgZnVuY3Rpb24gdG8gZnVsbHkgZ3Jhc3AgdGhlIGNvbnRleHQgYW5kIHdoeSB0aGlzIHdhcyBuZWNlc3NhcnkuIEl0IHdvdWxkIGJlIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBjb25jdXJyZW50IGFjY2Vzc2VzIHdpdGhpbiB0aGUgWEZSTSBzdWJzeXN0ZW0uIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoaXMgY2hhbmdlIHdhcyB0cmlnZ2VyZWQgYnkgYSBzcGVjaWZpYyBidWcgcmVwb3J0IG9yIGRpc2NvdmVyZWQgdGhyb3VnaCBzdGF0aWMgYW5hbHlzaXMuIE5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgJiMzOTt3aHkmIzM5OyBiZWhpbmQgdGhlIGNoYW5nZSB0byBnYXVnZSBpdHMgaW1wYWN0IGZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNjU9c3RhdGljIGJvb2wgeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhjb25zdCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbGljeSlcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzUtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyNzY6c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQyMTI9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fcG9saWN5X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI1ODpcdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrLCB4ZnJtX2hhc2hfcmVidWlsZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzOgoKKipBbmFseXppbmcgdGhlIGB4ZnJtX2hhc2hfcmVidWlsZGAgRnVuY3Rpb24qKgoKT2theSwgc28gYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyBydW5uaW5nIGFzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBJbnRlcmVzdGluZywgaXQmIzM5O3Mgbm90IHNvbWUgaW1tZWRpYXRlLCBpbnRlcnJ1cHQtY29udGV4dCB0aGluZy4gQW5kIGl0JiMzOTtzIGluaXRpYWxpemVkIGR1cmluZyBgeGZybV9wb2xpY3lfaW5pdGAsIHdoaWNoIGdpdmVzIG1lIGEgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpZiBJIG5lZWQgdG8gdHJhY2UgaXRzIG9yaWdpbnMuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhhdCBwcmV0dHkgbXVjaCBzY3JlYW1zIGJ1ZyBmaXgsIGFuZCBnaXZlbiB0aGUgY29udGV4dCBJJiMzOTttIGJldHRpbmcgb24gc29tZXRoaW5nIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlLWZyZWUsIG9yIHBlcmhhcHMgYW4gdW5oYXNoZWQgZGF0YSBzdHJ1Y3R1cmUgY2hlY2sgdGhhdCB3YXNuJiMzOTt0IHJvYnVzdCBlbm91Z2guIFRpbWUgdG8gZ2V0IGZhbWlsaWFyIHdpdGggdGhlIGN1cnJlbnQgY29uZmlnIHJlbGF0ZWQgdG8gWEZSTSwgc28gSSBjYW4gdHJ5IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IHByb2JsZW0gaXQmIzM5O3MgYWRkcmVzc2luZyBhbmQgaG93IHRoZXkmIzM5O3ZlIHRhY2tsZWQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWctNC0jXG5uZXQveGZybS9LY29uZmlnOjU6Y29uZmlnIFhGUk1cbm5ldC94ZnJtL0tjb25maWctNi1cdGJvb2xcbi0tXG5uZXQveGZybS9LY29uZmlnLTEwLVxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXG5uZXQveGZybS9LY29uZmlnLTEyLVx0Ym9vbFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cbm5ldC94ZnJtL0tjb25maWc6MTQ6Y29uZmlnIFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xNS1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy00Mi1cbm5ldC94ZnJtL0tjb25maWc6NDM6Y29uZmlnIFhGUk1fSU5URVJGQUNFXG5uZXQveGZybS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdmlydHVhbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTUwLVxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXG5uZXQveGZybS9LY29uZmlnLTUyLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTYwLVxubmV0L3hmcm0vS2NvbmZpZzo2MTpjb25maWcgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTYyLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBtaWdyYXRlIGRhdGFiYXNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy03MS1cbm5ldC94ZnJtL0tjb25maWc6NzI6Y29uZmlnIFhGUk1fU1RBVElTVElDU1xubmV0L3hmcm0vS2NvbmZpZy03My1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1wmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctODMtIyBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxubmV0L3hmcm0vS2NvbmZpZy04NS1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy05Mi0jIGFsZ29yaXRobXMgdGhhdCBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxubmV0L3hmcm0vS2NvbmZpZzo5Mzpjb25maWcgWEZSTV9FU1Bcbm5ldC94ZnJtL0tjb25maWctOTQtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWctMTA1LVxubmV0L3hmcm0vS2NvbmZpZzoxMDY6Y29uZmlnIFhGUk1fSVBDT01QXG5uZXQveGZybS9LY29uZmlnLTEwNy1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMjU9Y29uZmlnIE5FVF9LRVlfTUlHUkFURVxuLS1cbm5ldC94ZnJtL0tjb25maWctMTQwLVxubmV0L3hmcm0vS2NvbmZpZzoxNDE6Y29uZmlnIFhGUk1fSVBURlNcbm5ldC94ZnJtL0tjb25maWctMTQyLVx0dHJpc3RhdGUgXCYjMzQ7SVBzZWMgSVAtVEZTL0FHR0ZSQUcgKFJGQyA5MzQ3KSBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTE1Ni1cbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXG5uZXQveGZybS9LY29uZmlnLTE1OC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjUzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIFhGUk0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGVsZW1lbnQgaGVyZSBpcyBgWEZSTWAuIEl0JiMzOTtzIGEgc2ltcGxlIGJvb2xlYW4gZmxhZywgb24gb3Igb2ZmLiBCdXQgaXQmIzM5O3MgcmFyZWx5IHNldCBkaXJlY3RseSwgaXNuJiMzOTt0IGl0PyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIGl0JiMzOTtzIHR5cGljYWxseSBicm91Z2h0IGludG8gdGhlIGVuYWJsZWQgc3RhdGUgaW5kaXJlY3RseSwgdXN1YWxseSBieSBvdGhlciwgbW9yZSBncmFudWxhciBvcHRpb25zIGxpa2UgYFhGUk1fVVNFUmAgb3IgdGhpbmdzIHJlbGF0ZWQgdG8gSVBzZWMsIGxpa2UgYElORVRfRVNQYC4KClNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCB0cmlnZ2VycyB0aGUgZW5hYmxpbmcgb2YgYFhGUk1gIGluIHRoaXMgcGFydGljdWxhciBjb250ZXh0PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgYnVpbGQgZmxvdy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIHRvIHNlZSB3aGljaCBvZiB0aG9zZSBvdGhlciBmbGFncyBhcmUgaW5mbHVlbmNpbmcgdGhlIHN0YXRlIG9mIGBYRlJNYC4gTGV0JiMzOTtzIHVucmF2ZWwgdGhpcyBhbmQgc2VlIHdoYXQmIzM5O3MgdWx0aW1hdGVseSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBgWEZSTWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0xOTQ9Y29uZmlnIElYR0JFX0lQU0VDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xOTgtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTk5Olx0c2VsZWN0IFhGUk1fQUxHT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMDAtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMjA9Y29uZmlnIElYR0JFVkZfSVBTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyNC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjU6XHRzZWxlY3QgWEZSTV9BTEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIyNi1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMwND1jb25maWcgTkVUX0lQVlRJXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMDctXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZzozMDg6XHRzZWxlY3QgWEZSTVxubmV0L2lwdjQvS2NvbmZpZy0zMDktXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMzk9Y29uZmlnIElORVRfQUhcbm5ldC9pcHY0L0tjb25maWctMzQwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjM0MTpcdHNlbGVjdCBYRlJNX0FIXG5uZXQvaXB2NC9LY29uZmlnLTM0Mi1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWctMzU1LVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvblwmIzM0O1xubmV0L2lwdjQvS2NvbmZpZzozNTY6XHRzZWxlY3QgWEZSTV9FU1Bcbm5ldC9pcHY0L0tjb25maWctMzU3LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzY5PWNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXHRkZXBlbmRzIG9uIElORVRfRVNQXG5uZXQvaXB2NC9LY29uZmlnOjM3MjpcdHNlbGVjdCBYRlJNX09GRkxPQURcbm5ldC9pcHY0L0tjb25maWctMzczLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zODI9Y29uZmlnIElORVRfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM4Ni1cdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY0L0tjb25maWc6Mzg3Olx0c2VsZWN0IFhGUk1fRVNQSU5UQ1Bcbm5ldC9pcHY0L0tjb25maWctMzg4LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9Mzk0PWNvbmZpZyBJTkVUX0lQQ09NUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzk2LVx0c2VsZWN0IElORVRfWEZSTV9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWc6Mzk3Olx0c2VsZWN0IFhGUk1fSVBDT01QXG5uZXQvaXB2NC9LY29uZmlnLTM5OC1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTQ3PWNvbmZpZyBJTkVUNl9BSFxubmV0L2lwdjYvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2Ni9LY29uZmlnOjQ5Olx0c2VsZWN0IFhGUk1fQUhcbm5ldC9pcHY2L0tjb25maWctNTAtXHRoZWxwXG4tLVxubmV0L2lwdjYvS2NvbmZpZz02Mj1jb25maWcgSU5FVDZfRVNQXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2Ni9LY29uZmlnOjY0Olx0c2VsZWN0IFhGUk1fRVNQXG5uZXQvaXB2Ni9LY29uZmlnLTY1LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9Nzc9Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXG4tLVxubmV0L2lwdjYvS2NvbmZpZy03OS1cdGRlcGVuZHMgb24gSU5FVDZfRVNQXG5uZXQvaXB2Ni9LY29uZmlnOjgwOlx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxubmV0L2lwdjYvS2NvbmZpZy04MS1cdGRlZmF1bHQgblxuLS1cbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXG4tLVxubmV0L2lwdjYvS2NvbmZpZy05NC1cdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9pcHY2L0tjb25maWc6OTU6XHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxubmV0L2lwdjYvS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMDQtXHRzZWxlY3QgSU5FVDZfWEZSTV9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTA1Olx0c2VsZWN0IFhGUk1fSVBDT01QXG5uZXQvaXB2Ni9LY29uZmlnLTEwNi1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTExMj1jb25maWcgSVBWNl9NSVA2XG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IE1vYmlsaXR5XCYjMzQ7XG5uZXQvaXB2Ni9LY29uZmlnOjExNDpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2Ni9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE1MD1jb25maWcgSVBWNl9WVElcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE1My1cdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnOjE1NDpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2Ni9LY29uZmlnLTE1NS1cdGhlbHBcbi0tXG5uZXQveGZybS9LY29uZmlnPTE0PWNvbmZpZyBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTUtXHR0cmlzdGF0ZVxubmV0L3hmcm0vS2NvbmZpZzoxNjpcdHNlbGVjdCBYRlJNXG5uZXQveGZybS9LY29uZmlnLTE3LVx0c2VsZWN0IENSWVBUT1xuLS1cbm5ldC94ZnJtL0tjb25maWc9MjM9Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbm5ldC94ZnJtL0tjb25maWc6MjU6XHRzZWxlY3QgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTI2LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9ODQ9Y29uZmlnIFhGUk1fQUhcbm5ldC94ZnJtL0tjb25maWctODUtXHR0cmlzdGF0ZVxubmV0L3hmcm0vS2NvbmZpZzo4NjpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctODctXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz05Mz1jb25maWcgWEZSTV9FU1Bcbm5ldC94ZnJtL0tjb25maWctOTQtXHR0cmlzdGF0ZVxubmV0L3hmcm0vS2NvbmZpZzo5NTpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctOTYtXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMDY9Y29uZmlnIFhGUk1fSVBDT01QXG5uZXQveGZybS9LY29uZmlnLTEwNy1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjEwODpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTA5LVx0c2VsZWN0IENSWVBUT1xuLS1cbm5ldC94ZnJtL0tjb25maWc9MTEyPWNvbmZpZyBORVRfS0VZXG5uZXQveGZybS9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O1BGX0tFWSBzb2NrZXRzIChkZXByZWNhdGVkKVwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzoxMTQ6XHRzZWxlY3QgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMjctXHRkZXBlbmRzIG9uIE5FVF9LRVlcbm5ldC94ZnJtL0tjb25maWc6MTI4Olx0c2VsZWN0IFhGUk1fTUlHUkFURVxubmV0L3hmcm0vS2NvbmZpZy0xMjktXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY2OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgWEZSTSBVc2VyLVNwYWNlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgWEZSTSBzdWJzeXN0ZW0gaGVyZSwgZm9jdXNpbmcgb24gdGhlIHVzZXItc3BhY2UgY29uZmlndXJhdGlvbiBhc3BlY3QuIEl0IGxvb2tzIGxpa2UgYFhGUk1fVVNFUmAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIHBvaW50LiBJJiMzOTttIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGNvZGUuIE5vdyBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlzIHB1dCB0b2dldGhlci4KCkkgc2VlIHRoYXQgYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyBwYXJ0IG9mIGB4ZnJtX3BvbGljeS5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB3ZSBhcmUgZGVhbGluZyB3aXRoIHBvbGljeSBoZXJlLiBBbmQgdGhpcyB3aG9sZSB0aGluZyBpcyBkZXBlbmRlbnQgb24gYENPTkZJR19YRlJNYCwgb2YgY291cnNlLiBUaW1lIHRvIGRpZyBkZWVwZXIsIHNwZWNpZmljYWxseSBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBjaGVjayBgbmV0L3hmcm0vTWFrZWZpbGVgIHRvIHNlZSBob3cgZXZlcnl0aGluZyBpcyBjb21waWxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0xMj1lbmRpZlxubmV0L3hmcm0vTWFrZWZpbGUtMTMtXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVx0XHQgICAgICB4ZnJtX2lucHV0Lm8geGZybV9vdXRwdXQubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDMzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgd29ya2luZyB0aHJvdWdoIHRoaXM6CgoqKkRpZ2dpbmcgaW50byB0aGUgWEZSTSBTdWJzeXN0ZW0qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgWEZSTSBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgbWFuYWdlZC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19YRlJNYCBpcyB0aGUgY29yZSBvZiBpdCBhbGwuIEdvb2QgdG8ga25vdy4gQW5kIHRvIGVuYWJsZSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24sIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBYRlJNX1VTRVJgIGlzIHNldC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFhGUk0gaGFzaCB0YWJsZSBnZXRzIHJlYnVpbHQuIEl0IGxvb2tzIGxpa2UgYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzIGNhbGxlZCBlaXRoZXIgYnkgYHhmcm1faGFzaF9yZXNpemVgIHdoaWNoIEkgZXhwZWN0IHRvIHNlZSBpbiByZXNwb25zZSB0byBhIGNoYW5nZSBpbiByZXNvdXJjZXMsIGFuZCBieSBgeGZybV9wb2xpY3lfaHRocmVzaC53b3JrYC4gVGhhdCBgcG9saWN5X2h0aHJlc2gud29ya2AgaXMgaW50ZXJlc3RpbmcsIGFuZCBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSAqdGhhdCogaXMgc2NoZWR1bGVkIGZyb20uIEkgd29uZGVyIGlmIHRoaXMgcmVsYXRlcyB0byBtZW1vcnkgcHJlc3N1cmUsIG9yIHBlcmhhcHMgc29tZSBwb2xpY3kgdGhyZXNob2xkcz8gTGV0JiMzOTtzIHRyYWNlIGJhY2sgd2hlcmUgdGhpcyB3b3JrIHF1ZXVlIGl0ZW0gaXMgYWRkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BvbGljeV9odGhyZXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTI3OC1cdHN0cnVjdCBuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxMjc5Olx0XHRcdFx0ICAgICAgIHhmcm0ucG9saWN5X2h0aHJlc2gud29yayk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyODAtXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbDtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyOTEtXHRkbyB7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyOTI6XHRcdHNlcSA9IHJlYWRfc2VxYmVnaW4oXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jayk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyOTMtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyOTQ6XHRcdGxiaXRzNCA9IG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxiaXRzNDtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NTpcdFx0cmJpdHM0ID0gbmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gucmJpdHM0O1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxMjk2Olx0XHRsYml0czYgPSBuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sYml0czY7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyOTc6XHRcdHJiaXRzNiA9IG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLnJiaXRzNjtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5ODpcdH0gd2hpbGUgKHJlYWRfc2VxcmV0cnkoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jaywgc2VxKSk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyOTktXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0xMzk5PXZvaWQgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMC17XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjE0MDE6XHRzY2hlZHVsZV93b3JrKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDAyLX1cbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQyMTI9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fcG9saWN5X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI0Ny1cdH1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI0ODpcdG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxiaXRzNCA9IDMyO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjQ5Olx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gucmJpdHM0ID0gMzI7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTA6XHRuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sYml0czYgPSAxMjg7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTE6XHRuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5yYml0czYgPSAxMjg7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTItXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTM6XHRzZXFsb2NrX2luaXQoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jayk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTQtXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MjU3LVx0SU5JVF9XT1JLKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9oYXNoX3dvcmssIHhmcm1faGFzaF9yZXNpemUpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjU4Olx0SU5JVF9XT1JLKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmssIHhmcm1faGFzaF9yZWJ1aWxkKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1OS1cdHJldHVybiAwO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDI3Mz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm1fbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI3NC17XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNzU6XHRkaXNhYmxlX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI3Ni1cdGZsdXNoX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MzMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVGhpbmtpbmcgVGhyb3VnaCB0aGUgUG9saWN5IEhhc2ggUmVidWlsZCoqCgpSaWdodCwgc28gYHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZGAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSB3aG9sZSBzaGViYW5nLCB0aGUgcmVidWlsZCBvZiB0aGUgcG9saWN5IGhhc2guIE9rYXksIG5vdyBJIGNhbiBzdGFydCB0byB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgYW5kIHRoZSBwb3RlbnRpYWwgdXNlIGNhc2VzIGZvciBzY2hlZHVsaW5nIHRoaXMgcmVidWlsZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLiBMZXQmIzM5O3Mgc2VlLi4uIHdoZW4gd291bGQgdGhpcyBiZSB0cmlnZ2VyZWQ/IFdoYXQgYXJlIHRoZSBmYWN0b3JzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgdGhpcyBwcm9jZXNzPyBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGxvYWQgb24gdGhlIHN5c3RlbSwgdGhlIHBvdGVudGlhbCBjb250ZW50aW9uLCBhbmQgdGhlIGltcGFjdCB0aGlzIHJlYnVpbGQgd291bGQgaGF2ZSBvbiBvdmVyYWxsIHBlcmZvcm1hbmNlLiBJIHNob3VsZCBiZSBhYmxlIHRvIGRpZyBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYgYW5kIHN1cnJvdW5kaW5nIGNvZGUgdG8gZmlndXJlIG91dCB0aGUgdHJpZ2dlcmluZyBjb25kaXRpb25zIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gQmFzZWQgb24gaG93IHRoYXQmIzM5O3MgaW1wbGVtZW50ZWQsIEkgY2FuIGFudGljaXBhdGUgaG93IHRoaXMgaW1wYWN0cyBvdGhlciBjb21wb25lbnRzIHdpdGhpbiB0aGUgc3lzdGVtLiBVbmRlcnN0YW5kaW5nIHRoaXMgcmVidWlsZCBwcm9jZXNzIGlzIGNyaXRpY2FsIGZvciBkaWFnbm9zaW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBwZXJmb3JtYW5jZSBpc3N1ZXMgcmVsYXRlZCB0byBJUHNlYyBwb2xpY3kgbWFuYWdlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hmcm0uaD0xODk2PWludCB4ZnJtX3BvbGljeV9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsIGJvb2wgdGFza192YWxpZCk7XG5pbmNsdWRlL25ldC94ZnJtLmg6MTg5Nzp2b2lkIHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChzdHJ1Y3QgbmV0ICpuZXQpO1xuaW5jbHVkZS9uZXQveGZybS5oLTE4OTgtdTMyIHhmcm1fZ2V0X2FjcXNlcSh2b2lkKTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTM5OC1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTM5OTp2b2lkIHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDAte1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMi19XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjE0MDM6RVhQT1JUX1NZTUJPTCh4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDA0LVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTE2OTQ9c3RhdGljIGludCB4ZnJtX3NldF9zcGRpbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE3NDEtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxNzQyOlx0XHR4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQobmV0KTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE3NDMtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwOTcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYRlJNIFBvbGljeSBTZXR1cCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhyb3VnaCB0aGlzIGNvZGUgcmVsYXRlZCB0byBYRlJNIHBvbGljeSBtYW5hZ2VtZW50LiBJdCBsb29rcyBsaWtlIGB4ZnJtX3NldF9zcGRpbmZvYCBpcyBjYWxsaW5nIGB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRgLCB3aGljaCBpcyBleHBlY3RlZCBiZWhhdmlvciBmb3IgcG9saWN5IGNoYW5nZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gSSByZW1lbWJlciBgeGZybV9zZXRfc3BkaW5mb2AgcmVzaWRlcyBpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiAgQWhhLCBhbmQgdGhhdCBmaWxlIGdldHMgY29tcGlsZWQgKm9ubHkqIHdoZW4gYENPTkZJR19YRlJNX1VTRVJgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgYSBjcnVjaWFsIHBvaW50LiBJZiBJJiMzOTttIHVzaW5nIHRoZSB1c2VyIHNwYWNlIFhGUk0gaW50ZXJmYWNlLCB3aGljaCBJIGFtLCBgWEZSTV9VU0VSYCBpcyBhYnNvbHV0ZWx5IGEgcmVxdWlyZW1lbnQuIEkgbmVlZCB0byBlbnN1cmUgdGhpcyBpcyBzZXQgY29ycmVjdGx5IGluIG15IGNvbmZpZ3VyYXRpb24uIFRvIGNsYXJpZnkgaG93IGB4ZnJtX3NldF9zcGRpbmZvYCBpcyBkZXNpZ25lZCwgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHJldmlldyB0aGUgY29kZSBpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3NldF9zcGRpbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9MTY0MT1zdGF0aWMgaW50IGJ1aWxkX3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTMtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxNjk0OnN0YXRpYyBpbnQgeGZybV9zZXRfc3BkaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTUtXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKiphdHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNzIxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV9saW5rIHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzUyLVx0W1hGUk1fTVNHX0dFVFNBRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9nZXRfc2FkaW5mbyAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzUzOlx0W1hGUk1fTVNHX05FV1NQRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9zZXRfc3BkaW5mbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NTQtXHRcdFx0XHRcdFx0ICAgLm5sYV9wb2wgPSB4ZnJtYV9zcGRfcG9saWN5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzYxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBTZWN1cml0eSBQb2xpY3kgVXBkYXRlKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBuZXRsaW5rIG1lc3NhZ2UsIGBYRlJNX01TR19ORVdTUERJTkZPYC4gVGhhdCYjMzk7cyB0aGUga2V5IHRyaWdnZXIgaGVyZTsgaXQmIzM5O3Mgd2hhdCBpbml0aWF0ZXMgdGhpcyB3aG9sZSBwcm9jZXNzLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBmaXggZm9yIHRoYXQgYnVnIGluIGB4ZnJtX2hhc2hfcmVidWlsZGAsIHdoaWNoIGlzIGdvb2QgdG8gc2VlLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBgeGZybV9oYXNoX3JlYnVpbGRgIGFuZCBgeGZybV9zZXRfc3BkaW5mb2AsIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkgcmVhbGx5IG5lZWQgdG8gZm9jdXMgb24gdG8gZ3Jhc3AgdGhlIGZ1bGwgaW1wYWN0IG9mIHRoZSBjaGFuZ2UuCgpOb3csIGxldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEFoLCBsb29rcyBsaWtlIGBYRlJNX1VTRVJgIGlzIHN1ZmZpY2llbnQgaGVyZS4gYFhGUk1gIGl0c2VsZiBpcyBzZWxlY3RlZCBieSBgWEZSTV9VU0VSYC4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBYRlJNX1VTRVJgLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fVVNFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMzUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmV0d29yayBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGBJTkVUYCBpcyBhIGdpdmVuIOKAkyB0aGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGggaGVyZS4gSXQgd291bGRuJiMzOTt0IGJlIHZlcnkgdXNlZnVsIGlmIHdlIHdlcmUgb3BlcmF0aW5nIHdpdGhvdXQgdGhhdCwgc28gdGhhdCBjaGVja3Mgb3V0LiBOb3csIHdoZXJlIHdlcmUgd2U/IEFoIHllcywgbGV0JiMzOTtzIHJldmlzaXQgdGhhdCBgeGZybV9oYXNoX3JlYnVpbGRgIGZ1bmN0aW9uLiBJIHJlYWxseSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGFnYWluLiBUaGVyZSYjMzk7cyBwcm9iYWJseSBzb21ldGhpbmcgaW1wb3J0YW50IEkgYW0gb3Zlcmxvb2tpbmcsIGFuZCBpdCYjMzk7cyBrZXkgdGhhdCB0aGlzIHNwZWNpZmljIGVsZW1lbnQgaXMgZXhhbWluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNjU9c3RhdGljIGJvb2wgeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhjb25zdCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbGljeSlcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzUtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyNzY6c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQyMTI9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fcG9saWN5X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI1ODpcdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrLCB4ZnJtX2hhc2hfcmVidWlsZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY5OAoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBYRlJNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhlIGNvZGUgY2hhbmdlOiBgaGxpc3RfZGVsX3JjdWAgaXMgYmVpbmcgcmVwbGFjZWQgd2l0aCBgaGxpc3RfZGVsX2luaXRfcmN1YC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIG5vdCBqdXN0IGNvc21ldGljOyBpdCYjMzk7cyBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvZGUuIE15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdG8gZHJpbGwgZG93biBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuCgpUaGUgY3J1Y2lhbCBwYXJ0cyBhcmUgdGhlIGZ1bmN0aW9ucyBgeGZybV9oYXNoX3JlYnVpbGRgIGFuZCBgeGZybV9zZXRfc3BkaW5mb2AsIHdoaWNoIHNlZW0gdG8gYmUgdGhlIGZvY3VzIGhlcmUuIFRoZSAmIzM0O1dvcnRoRnV6emluZzogdHJ1ZSYjMzQ7IGZsYWcgaXMgYSBnb29kIGluZGljYXRvciB0aGF0IHdlIHNob3VsZCBjb25jZW50cmF0ZSBvdXIgZWZmb3J0cyBpbiB0aGVzZSBhcmVhcy4gVGhlIGBFbmFibGVDb25maWdzOiBYRlJNX1VTRVJgIGltcGxpZXMgdGhhdCB0aGlzIGlzc3VlIGlzIHBvdGVudGlhbGx5IHVzZXItdHJpZ2dlcmFibGUsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgZmFjdG9yIGluIGV2YWx1YXRpbmcgdGhlIHNldmVyaXR5IG9mIHRoZSBidWcuCgpOb3csIEkgdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoOiBgaGxpc3RfZGVsX2luaXRfcmN1YCB2ZXJzdXMgYGhsaXN0X2RlbF9yY3VgIGlzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcgZml4LiAgVGhlIHBhdGNoIGFpbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgWEZSTSBwb2xpY3kgaGFzaCB0YWJsZSwgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgcmVidWlsZGluZyBwcm9jZXNzLiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUuIFRoaXMgaXMgbGlrZWx5IHRyaWdnZXJlZCB2aWEgdGhlIGBYRlJNX01TR19ORVdTUERJTkZPYCBuZXRsaW5rIG1lc3NhZ2UuIFRoaXMgbWVhbnMgYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGNhbiBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgYnVnIHRocm91Z2ggY2FyZWZ1bGx5IGNyYWZ0ZWQgbmV0bGluayBtZXNzYWdlcywgbWFraW5nIGl0IGEgY3JpdGljYWwgdnVsbmVyYWJpbGl0eSB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyBgeGZybV9oYXNoX3JlYnVpbGRgIGludGVyYWN0cyB3aXRoIHRoZSBobGlzdCBhbmQgY29uZmlybSB0aGUgZXhhY3QgbWVjaGFuaXNtIGxlYWRpbmcgdG8gdGhlIGlzc3VlLiBJIHN1c3BlY3QgdGhpcyB3aWxsIGJlIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIxOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2hhc2hfcmVidWlsZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3NldF9zcGRpbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGhsaXN0X2RlbF9yY3VgIHRvIGBobGlzdF9kZWxfaW5pdF9yY3VgIGluIGB4ZnJtX2hhc2hfcmVidWlsZGAsIGZpeGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBidWcgd2hlbiByZWJ1aWxkaW5nIHRoZSBYRlJNIHBvbGljeSBoYXNoIHRhYmxlLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBYRlJNX01TR19ORVdTUERJTkZPYCBuZXRsaW5rIG1lc3NhZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc2V0X3NwZGluZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjQzLjA4MzczNDQyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTk2NjM0MTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3NldF9zcGRpbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDQ6NDMuMDgzNzM4ODk1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQzNDY3OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNjc3MmZkNDE3ODc4ZjBlNzEwZjBlNzVhYzFjYzk2ZGY2ZTkyNDljXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMjE6NDQ6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uMjYxMmE0MDU1NDJiYmQgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG5AQCAtMTM2Miw3ICsxMzYyLDcgQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRcXHRpZiAoeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhwb2xpY3kpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGhsaXN0X2RlbF9yY3UoXFx1MDAyNnBvbGljeS1cXHUwMDNlYnlkc3QpO1xcbitcXHRcXHRobGlzdF9kZWxfaW5pdF9yY3UoXFx1MDAyNnBvbGljeS1cXHUwMDNlYnlkc3QpO1xcbiBcXG4gXFx0XFx0bmV3cG9zID0gTlVMTDtcXG4gXFx0XFx0ZGlyID0geGZybV9wb2xpY3lfaWQyZGlyKHBvbGljeS1cXHUwMDNlaW5kZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMTo0NDo0My41NDg3MTY4NTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTMxNjQxMjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3NldF9zcGRpbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGJ1ZyB3aGVuIHJlYnVpbGRpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggdGFibGUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNjc3MmZkNDE3ODc4ZjBlNzEwZjBlNzVhYzFjYzk2ZGY2ZTkyNDljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAyMTo0NDo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uMjYxMmE0MDU1NDJiYmQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4rKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTM2Miw3ICsxMzYyLDcgQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRpZiAoeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhwb2xpY3kpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRobGlzdF9kZWxfcmN1KFx1MDAyNnBvbGljeS1cdTAwM2VieWRzdCk7XG4rXHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZwb2xpY3ktXHUwMDNlYnlkc3QpO1xuIFxuIFx0XHRuZXdwb3MgPSBOVUxMO1xuIFx0XHRkaXIgPSB4ZnJtX3BvbGljeV9pZDJkaXIocG9saWN5LVx1MDAzZWluZGV4KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjQzLjU0ODcxODA5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzgxNjc5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFhGUk0gUG9saWN5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC94ZnJtL3hmcm1fcG9saWN5LmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgeGZybV9oYXNoX3JlYnVpbGRgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgYSBzaW1wbGUgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsIGNoYW5nZTogdGhleSd2ZSBzd2FwcGVkIGBobGlzdF9kZWxfcmN1YCBmb3IgYGhsaXN0X2RlbF9pbml0X3JjdWAuIEhtbSwgc28gd2UncmUgaW5pdGlhbGl6aW5nIHRoZSBub2RlIGFmdGVyIGRlbGV0aW5nIGl0IG5vdy4gTWFrZXMgc2Vuc2Ug4oCTIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBtZWFudCB0byBwcm92aWRlIGFkZGl0aW9uYWwgc2FmZXR5LiBJdCdzIGFib3V0IHByZXZlbnRpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMgaWYgdGhpcyBgcG9saWN5LVx1MDAzZWJ5ZHN0YCBub2RlIGlzIHNvbWVob3cgY2hlY2tlZCBhZ2FpbiBhZnRlciBkZWxldGlvbiwgb3IgbWF5YmUgaWYgaXQncyBlcnJvbmVvdXNseSB0YXJnZXRlZCBmb3IgYW5vdGhlciBkZWxldGlvbi4gSW5pdGlhbGl6aW5nIGl0IGFmdGVyIGRlbGV0aW9uIGVzc2VudGlhbGx5IGNsZWFucyBpdCB1cCBhbmQgZW5zdXJlcyBpdHMgc3RhdGUgaXMgcHJlZGljdGFibGUuXG5cbkknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgeGZybV9wb2xpY3kuY2AgYXJvdW5kIHRoZSBgeGZybV9oYXNoX3JlYnVpbGRgIGZ1bmN0aW9uIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250ZXh0IGFuZCB3aHkgdGhpcyB3YXMgbmVjZXNzYXJ5LiBJdCB3b3VsZCBiZSBoZWxwZnVsIHRvIHVuZGVyc3RhbmQgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgY29uY3VycmVudCBhY2Nlc3NlcyB3aXRoaW4gdGhlIFhGUk0gc3Vic3lzdGVtLiBJJ20gd29uZGVyaW5nIGlmIHRoaXMgY2hhbmdlIHdhcyB0cmlnZ2VyZWQgYnkgYSBzcGVjaWZpYyBidWcgcmVwb3J0IG9yIGRpc2NvdmVyZWQgdGhyb3VnaCBzdGF0aWMgYW5hbHlzaXMuIE5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgJ3doeScgYmVoaW5kIHRoZSBjaGFuZ2UgdG8gZ2F1Z2UgaXRzIGltcGFjdCBmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjQ4LjU4Njg4ODY5NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODgxODk4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTI2NT1zdGF0aWMgYm9vbCB4ZnJtX3BvbGljeV9pc19kZWFkX29yX3NrKGNvbnN0IHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9saWN5KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc1LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI3NjpzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDIxMj1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9wb2xpY3lfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTctXFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yaywgeGZybV9oYXNoX3Jlc2l6ZSk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjU4OlxcdElOSVRfV09SSyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmssIHhmcm1faGFzaF9yZWJ1aWxkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjQ4LjY0NTcxMzg5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzk3MjIwNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpczpcblxuKipBbmFseXppbmcgdGhlIGB4ZnJtX2hhc2hfcmVidWlsZGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgeGZybV9oYXNoX3JlYnVpbGRgIGlzIHJ1bm5pbmcgYXMgYSB3b3JrcXVldWUgZnVuY3Rpb24uIEludGVyZXN0aW5nLCBpdCdzIG5vdCBzb21lIGltbWVkaWF0ZSwgaW50ZXJydXB0LWNvbnRleHQgdGhpbmcuIEFuZCBpdCdzIGluaXRpYWxpemVkIGR1cmluZyBgeGZybV9wb2xpY3lfaW5pdGAsIHdoaWNoIGdpdmVzIG1lIGEgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpZiBJIG5lZWQgdG8gdHJhY2UgaXRzIG9yaWdpbnMuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhhdCBwcmV0dHkgbXVjaCBzY3JlYW1zIGJ1ZyBmaXgsIGFuZCBnaXZlbiB0aGUgY29udGV4dCBJJ20gYmV0dGluZyBvbiBzb21ldGhpbmcgbGlrZSBhIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgcGVyaGFwcyBhbiB1bmhhc2hlZCBkYXRhIHN0cnVjdHVyZSBjaGVjayB0aGF0IHdhc24ndCByb2J1c3QgZW5vdWdoLiBUaW1lIHRvIGdldCBmYW1pbGlhciB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZyByZWxhdGVkIHRvIFhGUk0sIHNvIEkgY2FuIHRyeSB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBwcm9ibGVtIGl0J3MgYWRkcmVzc2luZyBhbmQgaG93IHRoZXkndmUgdGFja2xlZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjUxLjg4NTQzNzk1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjA0ODc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWctNC0jXFxubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy02LVxcdGJvb2xcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNTAtXFxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0vS2NvbmZpZy01Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNzEtXFxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXFxubmV0L3hmcm0vS2NvbmZpZy03My1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxcbm5ldC94ZnJtL0tjb25maWctOTQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTA1LVxcbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxcbm5ldC94ZnJtL0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTU2LVxcbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMTo0NDo1MS45NDE0OTI0NDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk1ODY0OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgWEZSTSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBlbGVtZW50IGhlcmUgaXMgYFhGUk1gLiBJdCdzIGEgc2ltcGxlIGJvb2xlYW4gZmxhZywgb24gb3Igb2ZmLiBCdXQgaXQncyByYXJlbHkgc2V0IGRpcmVjdGx5LCBpc24ndCBpdD8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCdzIHR5cGljYWxseSBicm91Z2h0IGludG8gdGhlIGVuYWJsZWQgc3RhdGUgaW5kaXJlY3RseSwgdXN1YWxseSBieSBvdGhlciwgbW9yZSBncmFudWxhciBvcHRpb25zIGxpa2UgYFhGUk1fVVNFUmAgb3IgdGhpbmdzIHJlbGF0ZWQgdG8gSVBzZWMsIGxpa2UgYElORVRfRVNQYC5cblxuU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IHRyaWdnZXJzIHRoZSBlbmFibGluZyBvZiBgWEZSTWAgaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBidWlsZCBmbG93LiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyB0byBzZWUgd2hpY2ggb2YgdGhvc2Ugb3RoZXIgZmxhZ3MgYXJlIGluZmx1ZW5jaW5nIHRoZSBzdGF0ZSBvZiBgWEZSTWAuIExldCdzIHVucmF2ZWwgdGhpcyBhbmQgc2VlIHdoYXQncyB1bHRpbWF0ZWx5IHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGBYRlJNYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY1MywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjU1LjEzNzM2MDYxNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMwMzAzNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBYRlJNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE5ND1jb25maWcgSVhHQkVfSVBTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTk4LVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTk5OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMjQtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjU6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzA3LVxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozMDg6XFx0c2VsZWN0IFhGUk1cXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxcbm5ldC9pcHY0L0tjb25maWctMzQwLVxcdHRyaXN0YXRlIFxcXCJJUDogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozNDE6XFx0c2VsZWN0IFhGUk1fQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1NS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEVTUCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1Ny1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM2OT1jb25maWcgSU5FVF9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXFx0ZGVwZW5kcyBvbiBJTkVUX0VTUFxcbm5ldC9pcHY0L0tjb25maWc6MzcyOlxcdHNlbGVjdCBYRlJNX09GRkxPQURcXG5uZXQvaXB2NC9LY29uZmlnLTM3My1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4Ni1cXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjQvS2NvbmZpZzozODc6XFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG5uZXQvaXB2NC9LY29uZmlnLTM4OC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM5ND1jb25maWcgSU5FVF9JUENPTVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzk2LVxcdHNlbGVjdCBJTkVUX1hGUk1fVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XFx0c2VsZWN0IFhGUk1fSVBDT01QXFxubmV0L2lwdjQvS2NvbmZpZy0zOTgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz00Nz1jb25maWcgSU5FVDZfQUhcXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBBSCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2Ni9LY29uZmlnOjQ5OlxcdHNlbGVjdCBYRlJNX0FIXFxubmV0L2lwdjYvS2NvbmZpZy01MC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjYvS2NvbmZpZzo2NDpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTY1LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9Nzc9Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVxcdGRlcGVuZHMgb24gSU5FVDZfRVNQXFxubmV0L2lwdjYvS2NvbmZpZzo4MDpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjYvS2NvbmZpZy04MS1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvaXB2Ni9LY29uZmlnOjk1OlxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxubmV0L2lwdjYvS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cXHRzZWxlY3QgSU5FVDZfWEZSTV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjEwNTpcXHRzZWxlY3QgWEZSTV9JUENPTVBcXG5uZXQvaXB2Ni9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTExMj1jb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbm5ldC9pcHY2L0tjb25maWc6MTE0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE1My1cXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MTU0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xNTUtXFx0aGVscFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xND1jb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTY6XFx0c2VsZWN0IFhGUk1cXG5uZXQveGZybS9LY29uZmlnLTE3LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MjM9Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoyNTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTg0PWNvbmZpZyBYRlJNX0FIXFxubmV0L3hmcm0vS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6ODY6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctODctXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz05Mz1jb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxubmV0L3hmcm0vS2NvbmZpZzo5NTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy05Ni1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTA4OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTEwOS1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTExMj1jb25maWcgTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJQRl9LRVkgc29ja2V0cyAoZGVwcmVjYXRlZClcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTI3LVxcdGRlcGVuZHMgb24gTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWc6MTI4OlxcdHNlbGVjdCBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTEyOS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ0OjU3LjA2NzY2ODUyNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNDg2MDExMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBYRlJNIFVzZXItU3BhY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgWEZSTSBzdWJzeXN0ZW0gaGVyZSwgZm9jdXNpbmcgb24gdGhlIHVzZXItc3BhY2UgY29uZmlndXJhdGlvbiBhc3BlY3QuIEl0IGxvb2tzIGxpa2UgYFhGUk1fVVNFUmAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIHBvaW50LiBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZS4gTm93IEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgcHV0IHRvZ2V0aGVyLlxuXG5JIHNlZSB0aGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgcGFydCBvZiBgeGZybV9wb2xpY3kuY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBwb2xpY3kgaGVyZS4gQW5kIHRoaXMgd2hvbGUgdGhpbmcgaXMgZGVwZW5kZW50IG9uIGBDT05GSUdfWEZSTWAsIG9mIGNvdXJzZS4gVGltZSB0byBkaWcgZGVlcGVyLCBzcGVjaWZpY2FsbHkgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4gSSdsbCBjaGVjayBgbmV0L3hmcm0vTWFrZWZpbGVgIHRvIHNlZSBob3cgZXZlcnl0aGluZyBpcyBjb21waWxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY2OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjAwLjExNjI3MTYzMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzNTAxODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9wb2xpY3lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTI9ZW5kaWZcXG5uZXQveGZybS9NYWtlZmlsZS0xMy1cXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDU6MDAuMTcyNjI3ODk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjMxMjM0MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIHRocm91Z2ggdGhpczpcblxuKipEaWdnaW5nIGludG8gdGhlIFhGUk0gU3Vic3lzdGVtKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgWEZSTSBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgbWFuYWdlZC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19YRlJNYCBpcyB0aGUgY29yZSBvZiBpdCBhbGwuIEdvb2QgdG8ga25vdy4gQW5kIHRvIGVuYWJsZSB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24sIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgYFhGUk1fVVNFUmAgaXMgc2V0LiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBYRlJNIGhhc2ggdGFibGUgZ2V0cyByZWJ1aWx0LiBJdCBsb29rcyBsaWtlIGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLiBJdCdzIGNhbGxlZCBlaXRoZXIgYnkgYHhmcm1faGFzaF9yZXNpemVgIHdoaWNoIEkgZXhwZWN0IHRvIHNlZSBpbiByZXNwb25zZSB0byBhIGNoYW5nZSBpbiByZXNvdXJjZXMsIGFuZCBieSBgeGZybV9wb2xpY3lfaHRocmVzaC53b3JrYC4gVGhhdCBgcG9saWN5X2h0aHJlc2gud29ya2AgaXMgaW50ZXJlc3RpbmcsIGFuZCBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSAqdGhhdCogaXMgc2NoZWR1bGVkIGZyb20uIEkgd29uZGVyIGlmIHRoaXMgcmVsYXRlcyB0byBtZW1vcnkgcHJlc3N1cmUsIG9yIHBlcmhhcHMgc29tZSBwb2xpY3kgdGhyZXNob2xkcz8gTGV0J3MgdHJhY2UgYmFjayB3aGVyZSB0aGlzIHdvcmsgcXVldWUgaXRlbSBpcyBhZGRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAzMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjA0LjI5NTc1MzQ4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU2NzgwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9saWN5X2h0aHJlc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0veGZybV9wb2xpY3kuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc4LVxcdHN0cnVjdCBuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI3OTpcXHRcXHRcXHRcXHQgICAgICAgeGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyODAtXFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2w7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyOTEtXFx0ZG8ge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5MjpcXHRcXHRzZXEgPSByZWFkX3NlcWJlZ2luKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jayk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjkzLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NDpcXHRcXHRsYml0czQgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM0O1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NTpcXHRcXHRyYml0czQgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gucmJpdHM0O1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NjpcXHRcXHRsYml0czYgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM2O1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5NzpcXHRcXHRyYml0czYgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gucmJpdHM2O1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI5ODpcXHR9IHdoaWxlIChyZWFkX3NlcXJldHJ5KFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubG9jaywgc2VxKSk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjk5LVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0xMzk5PXZvaWQgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDAte1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTQwMTpcXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yayk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDAyLX1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDIxMj1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9wb2xpY3lfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNDctXFx0fVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI0ODpcXHRuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM0ID0gMzI7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjQ5OlxcdG5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5yYml0czQgPSAzMjtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTA6XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxiaXRzNiA9IDEyODtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTE6XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLnJiaXRzNiA9IDEyODtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTItXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjUzOlxcdHNlcWxvY2tfaW5pdChcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxvY2spO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1NC1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cXHRJTklUX1dPUksoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTg6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yaywgeGZybV9oYXNoX3JlYnVpbGQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1OS1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDI3Mz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm1fbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNzQte1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI3NTpcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI3Ni1cXHRmbHVzaF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjA0LjM1MTQzNzAzM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY1OTYyNDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipUaGlua2luZyBUaHJvdWdoIHRoZSBQb2xpY3kgSGFzaCBSZWJ1aWxkKipcblxuUmlnaHQsIHNvIGB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRgLiBUaGF0J3MgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSB3aG9sZSBzaGViYW5nLCB0aGUgcmVidWlsZCBvZiB0aGUgcG9saWN5IGhhc2guIE9rYXksIG5vdyBJIGNhbiBzdGFydCB0byB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgYW5kIHRoZSBwb3RlbnRpYWwgdXNlIGNhc2VzIGZvciBzY2hlZHVsaW5nIHRoaXMgcmVidWlsZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlIGFuZCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuIExldCdzIHNlZS4uLiB3aGVuIHdvdWxkIHRoaXMgYmUgdHJpZ2dlcmVkPyBXaGF0IGFyZSB0aGUgZmFjdG9ycyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIHRoaXMgcHJvY2Vzcz8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBsb2FkIG9uIHRoZSBzeXN0ZW0sIHRoZSBwb3RlbnRpYWwgY29udGVudGlvbiwgYW5kIHRoZSBpbXBhY3QgdGhpcyByZWJ1aWxkIHdvdWxkIGhhdmUgb24gb3ZlcmFsbCBwZXJmb3JtYW5jZS4gSSBzaG91bGQgYmUgYWJsZSB0byBkaWcgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmIGFuZCBzdXJyb3VuZGluZyBjb2RlIHRvIGZpZ3VyZSBvdXQgdGhlIHRyaWdnZXJpbmcgY29uZGl0aW9ucyBhbmQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEJhc2VkIG9uIGhvdyB0aGF0J3MgaW1wbGVtZW50ZWQsIEkgY2FuIGFudGljaXBhdGUgaG93IHRoaXMgaW1wYWN0cyBvdGhlciBjb21wb25lbnRzIHdpdGhpbiB0aGUgc3lzdGVtLiBVbmRlcnN0YW5kaW5nIHRoaXMgcmVidWlsZCBwcm9jZXNzIGlzIGNyaXRpY2FsIGZvciBkaWFnbm9zaW5nIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBwZXJmb3JtYW5jZSBpc3N1ZXMgcmVsYXRlZCB0byBJUHNlYyBwb2xpY3kgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQzMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjA3LjMxNzQwMTYxNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA1ODgyNDU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3hmcm0uaD0xODk2PWludCB4ZnJtX3BvbGljeV9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHU4IHR5cGUsIGJvb2wgdGFza192YWxpZCk7XFxuaW5jbHVkZS9uZXQveGZybS5oOjE4OTc6dm9pZCB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQoc3RydWN0IG5ldCAqbmV0KTtcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTg5OC11MzIgeGZybV9nZXRfYWNxc2VxKHZvaWQpO1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0xMjc2PXN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTM5OC1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEzOTk6dm9pZCB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMC17XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDItfVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTQwMzpFWFBPUlRfU1lNQk9MKHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDA0LVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MTY5ND1zdGF0aWMgaW50IHhmcm1fc2V0X3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xNzQxLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjE3NDI6XFx0XFx0eGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKG5ldCk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMTc0My1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjA5LjM3NjIzMzI0NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA2MjkyODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWEZSTSBQb2xpY3kgU2V0dXAqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aHJvdWdoIHRoaXMgY29kZSByZWxhdGVkIHRvIFhGUk0gcG9saWN5IG1hbmFnZW1lbnQuIEl0IGxvb2tzIGxpa2UgYHhmcm1fc2V0X3NwZGluZm9gIGlzIGNhbGxpbmcgYHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZGAsIHdoaWNoIGlzIGV4cGVjdGVkIGJlaGF2aW9yIGZvciBwb2xpY3kgY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBJIHJlbWVtYmVyIGB4ZnJtX3NldF9zcGRpbmZvYCByZXNpZGVzIGluIGBuZXQveGZybS94ZnJtX3VzZXIuY2AuICBBaGEsIGFuZCB0aGF0IGZpbGUgZ2V0cyBjb21waWxlZCAqb25seSogd2hlbiBgQ09ORklHX1hGUk1fVVNFUmAgaXMgZW5hYmxlZC4gVGhhdCdzIGEgY3J1Y2lhbCBwb2ludC4gSWYgSSdtIHVzaW5nIHRoZSB1c2VyIHNwYWNlIFhGUk0gaW50ZXJmYWNlLCB3aGljaCBJIGFtLCBgWEZSTV9VU0VSYCBpcyBhYnNvbHV0ZWx5IGEgcmVxdWlyZW1lbnQuIEkgbmVlZCB0byBlbnN1cmUgdGhpcyBpcyBzZXQgY29ycmVjdGx5IGluIG15IGNvbmZpZ3VyYXRpb24uIFRvIGNsYXJpZnkgaG93IGB4ZnJtX3NldF9zcGRpbmZvYCBpcyBkZXNpZ25lZCwgSSdsbCBnbyBhaGVhZCBhbmQgcmV2aWV3IHRoZSBjb2RlIGluIGBuZXQveGZybS94ZnJtX3VzZXIuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwOTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDU6MTIuNTgyNTI3OTcyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODU5NDI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3NldF9zcGRpbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTE2NDE9c3RhdGljIGludCBidWlsZF9zcGRpbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTMtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTY5NDpzdGF0aWMgaW50IHhmcm1fc2V0X3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTY5NS1cXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzcyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzUyLVxcdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X3NhZGluZm8gICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3NTM6XFx0W1hGUk1fTVNHX05FV1NQRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9zZXRfc3BkaW5mbyxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzU0LVxcdFxcdFxcdFxcdFxcdFxcdCAgIC5ubGFfcG9sID0geGZybWFfc3BkX3BvbGljeSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDU6MTIuNjQxMTI5NTE3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjM0NDk5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFNlY3VyaXR5IFBvbGljeSBVcGRhdGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBuZXRsaW5rIG1lc3NhZ2UsIGBYRlJNX01TR19ORVdTUERJTkZPYC4gVGhhdCdzIHRoZSBrZXkgdHJpZ2dlciBoZXJlOyBpdCdzIHdoYXQgaW5pdGlhdGVzIHRoaXMgd2hvbGUgcHJvY2Vzcy4gVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgZml4IGZvciB0aGF0IGJ1ZyBpbiBgeGZybV9oYXNoX3JlYnVpbGRgLCB3aGljaCBpcyBnb29kIHRvIHNlZS4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYHhmcm1faGFzaF9yZWJ1aWxkYCBhbmQgYHhmcm1fc2V0X3NwZGluZm9gLCB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHJlYWxseSBuZWVkIHRvIGZvY3VzIG9uIHRvIGdyYXNwIHRoZSBmdWxsIGltcGFjdCBvZiB0aGUgY2hhbmdlLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gQWgsIGxvb2tzIGxpa2UgYFhGUk1fVVNFUmAgaXMgc3VmZmljaWVudCBoZXJlLiBgWEZSTWAgaXRzZWxmIGlzIHNlbGVjdGVkIGJ5IGBYRlJNX1VTRVJgLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBmb3IgYFhGUk1fVVNFUmAsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzYxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjE2LjIwNDU4MTg3N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkxNTY2OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1fVVNFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTMxLVxcbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcXG5uZXQveGZybS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJDb21wYXRpYmxlIEFCSSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMTo0NToxNi4yNjM3NDY3NjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0NTM2NzM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5ldHdvcmsgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGBJTkVUYCBpcyBhIGdpdmVuIOKAkyB0aGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgZm91bmRhdGlvbiB3ZSdyZSBzdGFydGluZyB3aXRoIGhlcmUuIEl0IHdvdWxkbid0IGJlIHZlcnkgdXNlZnVsIGlmIHdlIHdlcmUgb3BlcmF0aW5nIHdpdGhvdXQgdGhhdCwgc28gdGhhdCBjaGVja3Mgb3V0LiBOb3csIHdoZXJlIHdlcmUgd2U/IEFoIHllcywgbGV0J3MgcmV2aXNpdCB0aGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAgZnVuY3Rpb24uIEkgcmVhbGx5IG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgYWdhaW4uIFRoZXJlJ3MgcHJvYmFibHkgc29tZXRoaW5nIGltcG9ydGFudCBJIGFtIG92ZXJsb29raW5nLCBhbmQgaXQncyBrZXkgdGhhdCB0aGlzIHNwZWNpZmljIGVsZW1lbnQgaXMgZXhhbWluZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMzUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMTo0NToxOS4xMDkxMTcxNTVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5Nzc0NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fcG9saWN5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9wb2xpY3kuYz0xMjY1PXN0YXRpYyBib29sIHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2soY29uc3Qgc3RydWN0IHhmcm1fcG9saWN5ICpwb2xpY3kpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzUtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxMjc2OnN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzcte1xcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MjEyPXN0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtX3BvbGljeV9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cXHRJTklUX1dPUksoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTg6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yaywgeGZybV9oYXNoX3JlYnVpbGQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1OS1cXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjE6NDU6MTkuMTY4ODk2ODMxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MjQ3ODk5ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBYRlJNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBjb2RlIGNoYW5nZTogYGhsaXN0X2RlbF9yY3VgIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYGhsaXN0X2RlbF9pbml0X3JjdWAuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgbWVhbmluZyBpdCdzIG5vdCBqdXN0IGNvc21ldGljOyBpdCdzIGFsdGVyaW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgY29kZS4gTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0byBkcmlsbCBkb3duIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy5cblxuVGhlIGNydWNpYWwgcGFydHMgYXJlIHRoZSBmdW5jdGlvbnMgYHhmcm1faGFzaF9yZWJ1aWxkYCBhbmQgYHhmcm1fc2V0X3NwZGluZm9gLCB3aGljaCBzZWVtIHRvIGJlIHRoZSBmb2N1cyBoZXJlLiBUaGUgXCJXb3J0aEZ1enppbmc6IHRydWVcIiBmbGFnIGlzIGEgZ29vZCBpbmRpY2F0b3IgdGhhdCB3ZSBzaG91bGQgY29uY2VudHJhdGUgb3VyIGVmZm9ydHMgaW4gdGhlc2UgYXJlYXMuIFRoZSBgRW5hYmxlQ29uZmlnczogWEZSTV9VU0VSYCBpbXBsaWVzIHRoYXQgdGhpcyBpc3N1ZSBpcyBwb3RlbnRpYWxseSB1c2VyLXRyaWdnZXJhYmxlLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGZhY3RvciBpbiBldmFsdWF0aW5nIHRoZSBzZXZlcml0eSBvZiB0aGUgYnVnLlxuXG5Ob3csIEkgdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoOiBgaGxpc3RfZGVsX2luaXRfcmN1YCB2ZXJzdXMgYGhsaXN0X2RlbF9yY3VgIGlzIGEgY2xhc3NpYyBjb25jdXJyZW5jeSBidWcgZml4LiAgVGhlIHBhdGNoIGFpbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgWEZSTSBwb2xpY3kgaGFzaCB0YWJsZSwgc3BlY2lmaWNhbGx5IGR1cmluZyB0aGUgcmVidWlsZGluZyBwcm9jZXNzLiBUaGlzIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUuIFRoaXMgaXMgbGlrZWx5IHRyaWdnZXJlZCB2aWEgdGhlIGBYRlJNX01TR19ORVdTUERJTkZPYCBuZXRsaW5rIG1lc3NhZ2UuIFRoaXMgbWVhbnMgYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIGNhbiBwb3RlbnRpYWxseSB0cmlnZ2VyIHRoaXMgYnVnIHRocm91Z2ggY2FyZWZ1bGx5IGNyYWZ0ZWQgbmV0bGluayBtZXNzYWdlcywgbWFraW5nIGl0IGEgY3JpdGljYWwgdnVsbmVyYWJpbGl0eSB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyBgeGZybV9oYXNoX3JlYnVpbGRgIGludGVyYWN0cyB3aXRoIHRoZSBobGlzdCBhbmQgY29uZmlybSB0aGUgZXhhY3QgbWVjaGFuaXNtIGxlYWRpbmcgdG8gdGhlIGlzc3VlLiBJIHN1c3BlY3QgdGhpcyB3aWxsIGJlIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2OTgsIk91dHB1dFRva2VucyI6MTM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIxOjQ1OjI0Ljk5MzY4OTc4NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NjYyNzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICAgIFwieGZybV9zZXRfc3BkaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYGhsaXN0X2RlbF9yY3VgIHRvIGBobGlzdF9kZWxfaW5pdF9yY3VgIGluIGB4ZnJtX2hhc2hfcmVidWlsZGAsIGZpeGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBidWcgd2hlbiByZWJ1aWxkaW5nIHRoZSBYRlJNIHBvbGljeSBoYXNoIHRhYmxlLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBYRlJNX01TR19ORVdTUERJTkZPYCBuZXRsaW5rIG1lc3NhZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9oYXNoX3JlYnVpbGRcIixcbiAgICBcInhmcm1fc2V0X3NwZGluZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBobGlzdF9kZWxfcmN1YCB0byBgaGxpc3RfZGVsX2luaXRfcmN1YCBpbiBgeGZybV9oYXNoX3JlYnVpbGRgLCBmaXhpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgYnVnIHdoZW4gcmVidWlsZGluZyB0aGUgWEZSTSBwb2xpY3kgaGFzaCB0YWJsZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBgWEZSTV9NU0dfTkVXU1BESU5GT2AgbmV0bGluayBtZXNzYWdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[1] Phase: Succeeded StartedAt: 2026-07-02 21:46:44 +0000 UTC FinishedAt: 2026-07-02 21:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 21:46:44 +0000 UTC FinishedAt: 2026-07-02 21:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2] Phase: Succeeded StartedAt: 2026-07-02 21:46:44 +0000 UTC FinishedAt: 2026-07-03 01:37:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 21:46:44 +0000 UTC FinishedAt: 2026-07-03 01:37:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 21:46:44 +0000 UTC FinishedAt: 2026-07-02 21:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 21:46:44 +0000 UTC FinishedAt: 2026-07-02 21:46:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzhhbs/series-workflowzhhbs-convert-artifact-3296344890/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 21:47:04 +0000 UTC FinishedAt: 2026-07-02 22:08:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 21:47:04 +0000 UTC FinishedAt: 2026-07-02 22:08:34 +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:*b962fe67-99ca-4545-90ab-c1bb6415d6ad,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-workflowzhhbs/series-workflowzhhbs-convert-artifact-3296344890/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": "f0f335ae-245d-4fea-9a2a-e29982d968ce", "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-workflowzhhbs/series-workflowzhhbs-build-action-4273434856/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 21:47:04 +0000 UTC FinishedAt: 2026-07-02 22:08:24 +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:*b962fe67-99ca-4545-90ab-c1bb6415d6ad,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-workflowzhhbs/series-workflowzhhbs-convert-artifact-3296344890/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": "f0f335ae-245d-4fea-9a2a-e29982d968ce", "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-workflowzhhbs/series-workflowzhhbs-build-action-4273434856/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 22:08:34 +0000 UTC FinishedAt: 2026-07-02 22:08:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 22:08:34 +0000 UTC FinishedAt: 2026-07-02 22:08:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 22:08:34 +0000 UTC FinishedAt: 2026-07-02 22:08:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 22:08:34 +0000 UTC FinishedAt: 2026-07-02 22:08:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzhhbs/series-workflowzhhbs-convert-artifact-4267309973/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 22:08:44 +0000 UTC FinishedAt: 2026-07-02 22:11:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 22:08:44 +0000 UTC FinishedAt: 2026-07-02 22:10:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f0f335ae-245d-4fea-9a2a-e29982d968ce,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-workflowzhhbs/series-workflowzhhbs-build-action-4273434856/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-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 22:11:04 +0000 UTC FinishedAt: 2026-07-02 22:11:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 22:11:04 +0000 UTC FinishedAt: 2026-07-02 22:11:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 22:11:04 +0000 UTC FinishedAt: 2026-07-02 22:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 22:11:04 +0000 UTC FinishedAt: 2026-07-02 22:32:12 +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:*b962fe67-99ca-4545-90ab-c1bb6415d6ad,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-workflowzhhbs/series-workflowzhhbs-convert-artifact-4267309973/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": "5473d967-7667-4894-9534-ea806f40182a", "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-workflowzhhbs/series-workflowzhhbs-build-action-86549025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 22:11:04 +0000 UTC FinishedAt: 2026-07-02 22:32:01 +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:*b962fe67-99ca-4545-90ab-c1bb6415d6ad,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-workflowzhhbs/series-workflowzhhbs-convert-artifact-4267309973/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": "5473d967-7667-4894-9534-ea806f40182a", "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-workflowzhhbs/series-workflowzhhbs-build-action-86549025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 22:32:12 +0000 UTC FinishedAt: 2026-07-02 22:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 22:32:12 +0000 UTC FinishedAt: 2026-07-02 22:32:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 22:32:12 +0000 UTC FinishedAt: 2026-07-02 22:34:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 22:32:12 +0000 UTC FinishedAt: 2026-07-02 22:34:20 +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:*5473d967-7667-4894-9534-ea806f40182a,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-workflowzhhbs/series-workflowzhhbs-build-action-86549025/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-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 22:34:30 +0000 UTC FinishedAt: 2026-07-03 01:37:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 22:34:30 +0000 UTC FinishedAt: 2026-07-03 01:37:40 +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":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"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:*f0f335ae-245d-4fea-9a2a-e29982d968ce,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5473d967-7667-4894-9534-ea806f40182a,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-workflowzhhbs/series-workflowzhhbs-build-action-4273434856/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-workflowzhhbs/series-workflowzhhbs-build-action-86549025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 22:34:30 +0000 UTC FinishedAt: 2026-07-02 22:34:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 22:34:30 +0000 UTC FinishedAt: 2026-07-02 22:34:36 +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":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"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-workflowzhhbs/series-workflowzhhbs-convert-artifact-3551470714/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 22:34:30 +0000 UTC FinishedAt: 2026-07-02 22:34:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 22:34:30 +0000 UTC FinishedAt: 2026-07-02 22:34:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 22:34:30 +0000 UTC FinishedAt: 2026-07-02 22:34:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 22:34:40 +0000 UTC FinishedAt: 2026-07-03 01:37:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhhbs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"5e4b8eed-941c-4223-9115-12b5d537b6da","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 22:34:40 +0000 UTC FinishedAt: 2026-07-03 01:37:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f0f335ae-245d-4fea-9a2a-e29982d968ce,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5473d967-7667-4894-9534-ea806f40182a,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-workflowzhhbs/series-workflowzhhbs-build-action-4273434856/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-workflowzhhbs/series-workflowzhhbs-build-action-86549025/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-workflowzhhbs/series-workflowzhhbs-convert-artifact-3551470714/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,}